web-dev-qa-db-fra.com

Comment utiliser le test dotnet pour exécuter des tests à partir de plusieurs bibliothèques avec un seul résumé de réussite / échec

Comment exécuter des tests unitaires avec dotnet test si j'ai plusieurs bibliothèques de test dans une base de code?

Je peux courir dotnet test, et il trouvera et exécutera tous les tests même sur plusieurs bibliothèques, mais il exécute et signale chaque bibliothèque de tests exécutée indépendamment:

$ 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

Dans cet exemple, il y a deux bibliothèques de test, donc j'obtiens deux sorties de résultats de test.

Cela peut fonctionner correctement si le code a déjà été compilé, mais dans une version propre, il y aura beaucoup de sortie du compilateur. Cela peut facilement entraîner l'un des les résumés de test défilent au-delà de la partie visible de l'écran.

C'est un problème si ce test échoue.

Comment puis-je regrouper tous les tests unitaires en un seul résumé de réussite/échec?


Sur .NET 4.x, je pouvais, par exemple, utiliser le runner de console de xUnit.net pour exécuter toutes les bibliothèques de test en une seule suite:

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

Remarquez comment cela produit n seul résumé en bas de l'écran, afin que je puisse voir immédiatement si mes tests ont réussi ou échoué.

8
Mark Seemann

Utilisation dotnet vstest pour exécuter plusieurs assemblys.

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

Notez que cette méthode nécessite que vous pointez sur les assemblys compilés (par opposition à dotnet test, qui veut que vous pointer vers les fichiers de projet, et peut éventuellement construire les choses d'abord pour vous).

6
Brad Wilson