Microsoft entwickelt aktiv seine Open Source-Projekte wie ASP.NET Core oder MSBuild . Gleichzeitig gewinnt das xUnit-Testframework an Popularität , das in ihnen für Unit-Tests verwendet wird. In diesem Artikel werden verschiedene Möglichkeiten zum Ausführen von xUnit-Tests für die kontinuierliche Projektintegration mit TeamCity beschrieben .
Beispiel-Build-Konfigurationen finden Sie auf diesem TeamCity-Demoserver. Der Quellcode befindet sich in diesem Repository : Lib ist der Code der zu testenden Anwendung, und Lib.Tests ist das Projekt mit Tests. Beide Projekte zielen auf die .NET-Versionen von net472 und netcoreapp2.1 ab .
Zur Unterstützung von xUnit verfügt das Testprojekt über eine NuGet-Abhängigkeit für das entsprechende xunit-Paket :
<PackageReference Include="xunit"/>
Dieses Metapaket enthält keine Binärdateien, fügt jedoch den NuGet-Paketen xunit.core , xunit.assert und xunit.analyzers mehrere Abhängigkeiten hinzu . Dies ist die xUnit-Test-API. Jede Testmethode in xUnit ist mit dem Attribut [Fact] für reguläre Tests oder mit [Theory] für parametrisierte Tests gekennzeichnet. Normalerweise entspricht jedes getestete Modul einer eigenen Testklasse mit einer Reihe von Testmethoden, die die eine oder andere Logik überprüfen. Jedes getestete Projekt hat ein eigenes Testprojekt.
, TeamCity . , . TeamCity , . : , TeamCity .
xUnit console runner
, xunit.console, xunit.runner.console. : , , . :
- xunit.console TeamCity, ?
- xunit.console ? xunit.runner.console .NET.
- , , .NET?
- ? , , , , .
- ?
- TeamCity?
TeamCity, 5 , .NET:

(1): “ xunit.console?”:

.NET, xunit.runner.console Lib.Tests. 2 xunit.console TeamCity. , . xunit.console ? , NuGet-:
- Windows:
%userprofile%\.nuget\packages
- Mac/Linux:
~/.nuget/packages
, , , TeamCity, . . , xunit.console, NUGET_PACKAGES %teamcity.build.checkoutDir%/packages. , NuGet- . packages, . :

, xunit.console . . (solution), :

, packages NuGet- , xunit.runner.console, Lib.Tests/bin/Debug – , .NET. Lib.Tests/bin/Debug/net472 , Lib.Tests/bin/Debug/netcoreapp2.1 .NET CoreApp 2.1 . , _JSON-_ , . 3 .NET CoreApp 2.1:

: . :
- Lib.Tests/bin/Debug/net472
- Lib.Tests/bin/Debug/netcoreapp2.1/publish
xunit.console :
- packages/xunit.runner.console/**/net472/xunit.console.exe
- packages/xunit.runner.console/**/netcoreapp1.0/xunit.console.dll
** – xunit.runner.console.
(1) (2) . (3) , .NET. , .NET , . , , PowerShell- TeamCity Kotlin DSL. (4) (5), , , , .NET, :
- ,
- xunit.console.dll _xunit.console.exe _ , (, Docker, ..)


(6): “ TeamCity?”. xunit.console , _TEAMCITY_PROJECTNAME, TeamCity . xunit.console , TeamCity service messages.
, , . - , TeamCity Meta-Runner.
Meta-Runners Power Pack
TeamCity - Power Pack - xUnit.net-dotCover, xUnit- . :

(2) . , -, :

xunit.console NuGet- xunit.runner.console .NET Framework ( .NET Framework 4.72), . 2 xunit.console .
- , .NET Core .NET 5+.
- dotCover .
- xunit.console Xunit Runner Executable.
, - , , , , .NET Framework.
dotnet test
.NET Runner test , .NET TeamCity. :

:
: xUnit, NUint . .
, .
.NET TargetFrameworks, Full .NET Framework, .NET Core .NET 5+.
Docker-.
- .
Visual Studio Rider dotnet new, , dotnet new xunit -o Lib.Tests, . "", , xunit, Microsoft.NET.Test.Sdk xunit.runner.visualstudio:
<PackageReference Include="Microsoft.NET.Test.Sdk"/>
<PackageReference Include="xunit.runner.visualstudio"/>
Microsoft.NET.Test.Sdk MSBuild, , : xunit.runner.visualstudio, Visual Studio Test Platform. , , NUnit – NUnit3TestAdapter, MSTest – MSTest.TestAdapter.
xUnit .
, ! TeamCity , . TeamCity .NET, .