使用NUnit Console Runner在文件夹下运行所有​​测试

时间:2015-12-21 12:19:51

标签: c# unit-testing testing nunit nunit-console

我正在尝试使用NUnit Runners 2.6.4在我的测试文件夹中运行所有测试程序集。我当前的命令如下所示:

/nologo /noshadow /framework:net-4.0 /xml:.\test\TestResults.xml .\test\*.Test.dll

不幸的是,Nunit只抛出一个System.ArgumentException:路径中的字符非法。

无论如何我能做到这一点吗?

4 个答案:

答案 0 :(得分:8)

无法将通配符用于输入文件,但您可以在命令行中指定多个测试库:

/nologo /noshadow /framework:net-4.0 /xml:.\test\TestResults.xml .\test\SomeLib1.Test.dll .\test\SomeLib2.Test.dll .\test\SomeLib3.Test.dll

来自the official documentation

  

输入文件可以是包含的托管程序集(.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)。

答案 1 :(得分:7)

您可以使用以下PowerShell命令(对于NUnit3,对于NUnit2更改运行器名称):

PS> nunit3-console (ls -r *\bin\Debug\*.Tests.dll | % FullName | sort-object -Unique)

来自previous answer的命令同步在单独的nunit进程中运行每个测试程序集。此处显示的命令在单个nunit实例中运行所有测试程序集,允许利用引擎built-in parallel test run

<强>说明

  1. 请记住调整目录搜索模式。给定示例仅运行以.Tests.dll\bin\Debug目录结尾的程序集。

  2. 请注意Unique过滤 - 您可能不想拥有它。

答案 2 :(得分:0)

尝试:

PS> nunit3-console (ls -r *\bin\Debug\*.Tests.dll | % { $_.FullName } | sort-object -Unique)

对one_mile_run的答案进行一些调整,以解决导致错误的问题:

  

无法将“System.String”类型的“FullName”值转换为“System.Management.Automation.ScriptBlock”类型

答案 3 :(得分:0)

我成功地在某个文件夹中运行测试的一种方法是使用where选项。 =~语法用于使用正则表达式(.NET风格)来匹配名称空间。如果名称空间符合每个约定的文件夹结构名称,则将获得所需的结果。您需要让正则表达式匹配您要定位的顶级文件夹。

nunit3-console.exe --where="namespace =~ ^YourBase.Namespace" yourproject.dll