我正在尝试使用 NUnit Runners 2.6.4 运行我的测试文件夹中的所有测试程序集。我当前的命令如下所示:
/nologo /noshadow /framework:net-4.0 /xml:.\test\TestResults.xml .\test\*.Test.dll
不幸的是,Nunit 只是抛出一个 System.ArgumentException: Illegal characters in path。
无论如何我可以做到这一点吗?
我正在尝试使用 NUnit Runners 2.6.4 运行我的测试文件夹中的所有测试程序集。我当前的命令如下所示:
/nologo /noshadow /framework:net-4.0 /xml:.\test\TestResults.xml .\test\*.Test.dll
不幸的是,Nunit 只是抛出一个 System.ArgumentException: Illegal characters in path。
无论如何我可以做到这一点吗?
您可以使用以下 PowerShell 命令(对于 NUnit3,对于 NUnit2 更改运行器名称):
PS> nunit3-console (ls -r *\bin\Debug\*.Tests.dll | % FullName | sort-object -Unique)
来自先前答案的命令在单独的 nunit 进程中同步运行每个测试程序集。此处介绍的命令在单个 nunit 实例中运行所有测试程序集,这允许利用引擎内置的并行测试运行。
评论
记得调整目录搜索模式。给定的示例仅运行以目录结尾.Tests.dll
和内部\bin\Debug
目录的程序集。
注意Unique
过滤 - 你可能不想拥有它。
输入文件不能使用通配符,但您可以在命令行中指定多个测试库:
/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)
更新
您可以使用批处理文件对文件夹中的所有文件运行命令:
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\
文件夹中选择文件的名称。这些名称被一一*.Test.dll
传递给命令 ( )。nunit-console
尝试:
PS> nunit3-console (ls -r *\bin\Debug\*.Tests.dll | % { $_.FullName } | sort-object -Unique)
对 one_mile_run 的答案稍作调整,以解决导致错误的问题:
无法将“System.String”类型的“FullName”值转换为“System.Management.Automation.ScriptBlock”类型
我成功地在某个文件夹中运行测试的一种方法是使用该where
选项。该=~
语法用于使用正则表达式(.NET 风格)来匹配命名空间。如果命名空间与每个约定的文件夹结构名称匹配,您将获得所需的结果。您会希望您的正则表达式与您所定位的顶级文件夹相匹配。
nunit3-console.exe --where="namespace =~ ^YourBase.Namespace" yourproject.dll