如何用NUnit3-Console直接运行VS解决方案下所有测试项目?
解决方案:用NUnit控制台运行VS解决方案下所有测试项目
NUnit3-Console本身不支持直接传入.sln文件自动识别测试项目,但可以通过以下两种方式实现你要的效果:
方法1:用.NET CLI的dotnet test命令(最简便)
dotnet test原生支持直接传入解决方案文件,会自动扫描并运行所有测试项目里的NUnit测试,前提是你的测试项目满足:
- 引用了
NUnit、NUnit3TestAdapter和Microsoft.NET.Test.Sdk这三个NuGet包 - 已经编译过解决方案(或者让
dotnet test自动帮你编译)
直接执行命令即可:
dotnet test YourSolution.sln
你还可以加参数控制测试行为,比如指定编译配置、过滤测试、生成报告:
dotnet test YourSolution.sln -c Release --filter Category=Unit --logger:nunit;LogFileName=TestResults.xml
方法2:用脚本遍历测试项目传给nunit3-console
如果一定要用nunit3-console.exe,可以写个简单脚本先找出所有测试项目的编译产物,再批量传入:
PowerShell示例
# 1. 编译解决方案(可选,确保测试dll是最新的) dotnet build YourSolution.sln -c Release # 2. 找出所有带Tests后缀的测试项目 $testProjects = dotnet sln list | Where-Object { $_ -match "Tests\.csproj$" } # 3. 获取每个测试项目的输出dll路径 $testDlls = @() foreach ($proj in $testProjects) { $targetPath = dotnet msbuild $proj /t:GetTargetPath /p:Configuration=Release | Select-Object -Last 1 $testDlls += $targetPath.Trim() } # 4. 用nunit3-console运行所有测试dll nunit3-console.exe $testDlls
简化版(如果测试dll路径有规律)
如果你的测试项目编译后都在bin/Release目录下,且命名带Tests,可以直接用通配符:
nunit3-console.exe **/*Tests/bin/Release/**/*.dll
注意先执行dotnet build YourSolution.sln -c Release确保dll是最新的。
内容的提问来源于stack exchange,提问作者Graviton
相关产品推荐
相关产品推荐

