You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:10:35