web-dev-qa-db-ja.com

dotnetテストを使用して、単一の合格/不合格の概要で複数のライブラリからテストを実行する方法

コードベースに複数のテストライブラリがある場合、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

この例では、2つのテストライブラリがあるため、2つのテスト結果出力が得られます。

コードが既にコンパイルされている場合はこれで問題なく動作する可能性がありますが、クリーンビルドでは、コンパイラーからの出力が大量になります。これにより、テスト実行の要約が画面の表示部分を超えてスクロールするの1つが簡単に発生する可能性があります。

そのテスト実行が失敗した場合、それは問題です。

すべての単体テストを単一の合格/不合格の要約にまとめるにはどうすればよいですか?


.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)

画面の下部に単一の要約が生成されることに注意してください。これにより、テストが成功したか失敗したかをすぐに確認できます。

8
Mark Seemann

複数のアセンブリを実行するには、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] [[--] <RunSettings arguments>...]]

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は、プロジェクトファイルをポイントし、オプションで最初にビルドします)。

6
Brad Wilson