dotnet test
如果代码库中有多个测试库,如何运行单元测试?
我可以运行dotnet test
,它甚至可以跨多个库查找并运行所有测试,但是它可以运行并报告每个独立运行的测试库:
$ dotnet test Test run for C:\Users\mark\Documents\Redacted.Test\bin\Debug\netcoreapp2.1\Redacted.Test.dll(.NETCoreApp,Version=v2.1) Test run for C:\Users\mark\Documents\Redacted\Redacted.SqlAccess.Test\bin\Debug\netcoreapp2.1\Redacted.SqlAccess.Test.dll(.NETCoreApp,Version=v2.1) Microsoft (R) Test Execution Command Line Tool Version 16.2.0-preview-20190606-02 Copyright (c) Microsoft Corporation. All rights reserved. Microsoft (R) Test Execution Command Line Tool Version 16.2.0-preview-20190606-02 Copyright (c) Microsoft Corporation. All rights reserved. Starting test execution, please wait... Starting test execution, please wait... Test Run Successful. Total tests: 59 Passed: 59 Total time: 3.1779 Seconds Test run for C:\Users\mark\Documents\Redacted\Redacted.RestApi.Tests\bin\Debug\netcoreapp2.1\Redacted.RestApi.Tests.dll(.NETCoreApp,Version=v2.1) Microsoft (R) Test Execution Command Line Tool Version 16.2.0-preview-20190606-02 Copyright (c) Microsoft Corporation. All rights reserved. Starting test execution, please wait... Test Run Successful. Total tests: 99 Passed: 99 Total time: 9.8155 Seconds Test Run Successful. Total tests: 25 Passed: 25 Total time: 21.2894 Seconds
在此示例中,有两个测试库,因此我得到两个测试结果输出。
如果代码已经被编译,这可能行得通,但是在一个干净的版本中,编译器将有很多输出。这很容易导致测试运行摘要之一滚动到屏幕的可见部分之外。
如果该测试运行失败,那就是一个问题。
如何将所有单元测试折叠为一个通过/失败摘要?
例如,在.NET 4.x上,我可以使用xUnit.net的控制台运行程序以单个套件的形式运行所有测试库:
$ ./packages/xunit.runner.console.2.4.0/tools/net461/xunit.console BookingApi.UnitTests/bin/Debug/Ploeh.Samples.Booking Api.UnitTests.dll BookingApi.SqlTests/bin/Debug/Ploeh.Samples.BookingApi.SqlTests.dll xUnit.net Console Runner v2.4.0 (64-bit Desktop .NET 4.6.1, runtime: 4.0.30319.42000) Discovering: Ploeh.Samples.BookingApi.UnitTests Discovered: Ploeh.Samples.BookingApi.UnitTests Starting: Ploeh.Samples.BookingApi.UnitTests Finished: Ploeh.Samples.BookingApi.UnitTests Discovering: Ploeh.Samples.BookingApi.SqlTests Discovered: Ploeh.Samples.BookingApi.SqlTests Starting: Ploeh.Samples.BookingApi.SqlTests Finished: Ploeh.Samples.BookingApi.SqlTests === TEST EXECUTION SUMMARY === Ploeh.Samples.BookingApi.SqlTests Total: 3, Errors: 0, Failed: 0, Skipped: 0, Time: 3.816s Ploeh.Samples.BookingApi.UnitTests Total: 7, Errors: 0, Failed: 0, Skipped: 0, Time: 0.295s -- - - - ------ GRAND TOTAL: 10 0 0 0 4.111s (5.565s)
请注意,这是如何在屏幕底部生成一个摘要的,因此我可以立即查看我的测试是否通过。
使用dotnet vstest
运行多个程序集。
PS> dotnet vstest --help Microsoft (R) Test Execution Command Line Tool Version 15.9.0 Copyright (c) Microsoft Corporation. All rights reserved. Usage: vstest.console.exe [Arguments] [Options] [[--]...]] Description: Runs tests from the specified files. Arguments: [TestFileNames] Run tests from the specified files. Separate multiple test file names by spaces. Examples: mytestproject.dll mytestproject.dll myothertestproject.exe ...
请注意,此方法要求您指向已编译的程序集(与相对dotnet test
,后者希望您指向项目文件,并可以选择先为您构建内容)。