.NET Core 1.0 - 如何使用xUnit命令行运行"解决方案中的所有测试"

Bru*_*cia 14 xunit .net-core asp.net-core dotnet-cli .net-core-rc2

入门xUnit.net(.NET核心/ ASP.NET核心)页面描述如何运行与测试dotnet test的命令行.

它声明它需要一个特定的project.json,我们在其中添加xunit依赖项和测试运行器:

  "testRunner": "xunit",
    "dependencies": {
        "xunit": "2.1.0",
        "dotnet-test-xunit": "1.0.0-rc2-build10015"
    }
Run Code Online (Sandbox Code Playgroud)

如果我尝试从父目录中调用它:

C:\git\Project\test [master ?]> dotnet test
dotnet-test Error: 0 : System.InvalidOperationException: C:\git\Project\test\project.json does not exist.
   at Microsoft.DotNet.Tools.Test.TestCommand.GetProjectPath(String projectPath)
   at Microsoft.DotNet.Tools.Test.TestCommand.DoRun(String[] args)
C:\git\Project\test [master ?]>
Run Code Online (Sandbox Code Playgroud)

问题:有没有办法用一个单独运行所有测试(多个project.json)dotnet test

And*_*icz 9

如果有人在寻找Windows答案,那么PowerShell中的oneliner可以完成这项工作:

dir test | % { dotnet test $_.FullName }


Bru*_*cia 6

由于已经差不多一个月而且没有答案,我至少会分享我一直在做的事情.(一旦Visual Studio"15"RTM启动,这将不相关,因为project.json已经死了)

只需for在所有project.json上使用循环:

在本地,从测试目录,我只是运行:

for /f %a in ('dir /b /s project.json ^| find /v "TestUtilities"') do dotnet test %a
Run Code Online (Sandbox Code Playgroud)

在所有project.json上运行它,除了路径有:TestUtilities

请注意,在TeamCity上你需要转义%(并且在脚本中你需要双倍:%%)所以它顺其自:

for /f %%%a in ('dir /b /s project.json ^| find /v "TestUtilities"') do dotnet test %%%a
Run Code Online (Sandbox Code Playgroud)

注意%%%.由于TeamCity中的%用于变量,因此第三个%转义它.