使用NUnit Console Runner在文件夹下运行所有测试
我正在尝试使用NUnit Runners 2.6.4在我的测试文件夹中运行所有测试程序集。 我当前的命令如下所示:
/nologo /noshadow /framework:net-4.0 /xml:.\test\TestResults.xml .\test\*.Test.dll
不幸的是,Nunit只抛出一个System.ArgumentException:路径中的非法字符。
无论如何我能做到这一点吗?
无法将通配符用于输入文件,但您可以在命令行中指定多个测试库:
/nologo /noshadow /framework:net-4.0 /xml:.\test\TestResults.xml .\test\SomeLib1.Test.dll .\test\SomeLib2.Test.dll .\test\SomeLib3.Test.dll
从官方文档 :
输入文件可以是包含测试的托管程序集(.dll或.exe)或NUnit可识别的项目文件。 开箱即用,可识别以下项目类型:
NUnit项目文件(.nunit)
Visual Studio解决方案(.sln)
Visual Studio项目(.csproj,.vbproj,.csproj)
UPDATE
您可以使用批处理文件为该文件夹中的所有文件运行命令:
for /f %%f in ('dir .\test\ /b /s *.Test.dll') do nunit-console /nologo /noshadow /framework:net-4.0 /xml:.\test\TestResults.xml "%%f"
dir
命令使用*.Test.dll
模板从.\test\
文件夹中选择文件的名称。 名称将nunit-console
传递给命令( nunit-console
)。
您可以使用以下PowerShell命令(对于NUnit3,对于NUnit2更改运行程序名称):
PS> nunit3-console (ls -r *\bin\Debug\*.Tests.dll | % FullName | sort-object -Unique)
上一个答案中的命令同步在单独的nunit进程中运行每个测试程序集。 此处显示的命令在单个nunit实例中运行所有测试程序集,允许利用引擎内置的并行测试运行 。
备注
-
记得调整目录搜索模式。 给定示例仅运行以
.Tests.dll
和\bin\Debug
目录结尾的程序集。 -
请注意
Unique
过滤 – 您可能不想拥有它。
尝试:
PS> nunit3-console (ls -r *\bin\Debug\*.Tests.dll | % { $_.FullName } | sort-object -Unique)
稍微调整一下one_mile_run的答案来修复导致错误的问题:
无法将“System.String”类型的“FullName”值转换为“System.Management.Automation.ScriptBlock”类型
我在某个文件夹中运行测试成功的一种方法是使用where
选项。 =~
语法用于使用Regex(.NET flavor)来匹配命名空间。 如果命名空间符合每个约定的文件夹结构名称,您将获得所需的结果。 您希望正则表达式与您定位的顶级文件夹相匹配。
nunit3-console.exe --where="namespace =~ ^YourBase.Namespace" yourproject.dll