dotnet testdotnet test

Dieser Artikel gilt für: ✔️ .NET Core 2.1 SDK und neuere VersionenThis article applies to: ✔️ .NET Core 2.1 SDK and later versions

nameName

dotnet test: .NET-Testtreiber, der verwendet wird, um Komponententests auszuführen.dotnet test - .NET test driver used to execute unit tests.

ÜbersichtSynopsis

dotnet test [<PROJECT> | <SOLUTION> | <DIRECTORY> | <DLL>]
    [-a|--test-adapter-path <ADAPTER_PATH>] [--blame] [--blame-crash]
    [--blame-crash-dump-type <DUMP_TYPE>] [--blame-crash-collect-always]
    [--blame-hang] [--blame-hang-dump-type <DUMP_TYPE>]
    [--blame-hang-timeout <TIMESPAN>]
    [-c|--configuration <CONFIGURATION>]
    [--collect <DATA_COLLECTOR_NAME>]
    [-d|--diag <LOG_FILE>] [-f|--framework <FRAMEWORK>]
    [--filter <EXPRESSION>] [--interactive]
    [-l|--logger <LOGGER>] [--no-build]
    [--nologo] [--no-restore] [-o|--output <OUTPUT_DIRECTORY>]
    [-r|--results-directory <RESULTS_DIR>] [--runtime <RUNTIME_IDENTIFIER>]
    [-s|--settings <SETTINGS_FILE>] [-t|--list-tests]
    [-v|--verbosity <LEVEL>] [[--] <RunSettings arguments>]

dotnet test -h|--help

BeschreibungDescription

Der Befehl dotnet test wird zum Ausführen von Komponententests in einer bestimmten Projektmappe verwendet.The dotnet test command is used to execute unit tests in a given solution. Mit dem Befehl dotnet test wird die Projektmappe erstellt und für jedes Testprojekt in der Projektmappe eine Testhostanwendung ausgeführt.The dotnet test command builds the solution and runs a test host application for each test project in the solution. Der Testhost führt Tests im angegebenen Projekt mithilfe eines Testframeworks aus, z. B. MSTest, NUnit oder xUnit, und meldet den Erfolg oder Fehler jedes Tests.The test host executes tests in the given project using a test framework, for example: MSTest, NUnit, or xUnit, and reports the success or failure of each test. Wenn alle Tests erfolgreich sind, gibt der Test Runner 0 (null) als Exitcode zurück. Wenn jedoch ein Test fehlschlägt, wird 1 zurückgegeben.If all tests are successful, the test runner returns 0 as an exit code; otherwise if any test fails, it returns 1.

Bei Projekten mit mehreren Zielen werden Tests für jedes Zielframework ausgeführt.For multi-targeted projects, tests are run for each targeted framework. Der Testhost und das Komponententest-Framework werden als NuGet-Pakete gepackt und als gewöhnliche Abhängigkeiten für das Projekt wiederhergestellt.The test host and the unit test framework are packaged as NuGet packages and are restored as ordinary dependencies for the project.

In Testprojekten wird der Testlauf mittels eines normalen <PackageReference>-Elements angegeben, wie in der folgenden Beispielprojektdatei gezeigt wird:Test projects specify the test runner using an ordinary <PackageReference> element, as seen in the following sample project file:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" />
    <PackageReference Include="xunit" Version="2.4.1" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3" />
  </ItemGroup>

</Project>

Wobei Microsoft.NET.Test.Sdk der Testhost und xunit das Testframework ist.Where Microsoft.NET.Test.Sdk is the test host, xunit is the test framework. Und xunit.runner.visualstudio ist ein Testadapter, der es dem xUnit-Framework ermöglicht, mit dem Testhost zu arbeiten.And xunit.runner.visualstudio is a test adapter, which allows the xUnit framework to work with the test host.

Implizite WiederherstellungImplicit restore

Sie müssen dotnet restore nicht ausführen, da der Befehl implizit von allen Befehlen ausgeführt wird, die eine Wiederherstellung erfordern. Zu diesen zählen z. B. dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish und dotnet pack.You don't have to run dotnet restore because it's run implicitly by all commands that require a restore to occur, such as dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish, and dotnet pack. Verwenden Sie die Option --no-restore, um die implizite Wiederherstellung zu deaktivieren.To disable implicit restore, use the --no-restore option.

In bestimmten Fällen eignet sich der dotnet restore-Befehl dennoch. Dies ist etwa bei Szenarios der Fall, in denen die explizite Wiederherstellung sinnvoll ist. Beispiele hierfür sind Continuous Integration-Builds in Azure DevOps Services oder Buildsysteme, die den Zeitpunkt für die Wiederherstellung explizit steuern müssen.The dotnet restore command is still useful in certain scenarios where explicitly restoring makes sense, such as continuous integration builds in Azure DevOps Services or in build systems that need to explicitly control when the restore occurs.

Informationen zum Verwalten von NuGet-Feeds finden Sie in der dotnet restoreDokumentation.For information about how to manage NuGet feeds, see the dotnet restore documentation.

ArgumenteArguments

  • PROJECT | SOLUTION | DIRECTORY | DLL

    • Der Pfad zum Testprojekt.Path to the test project.
    • Der Pfad zur Projektmappe.Path to the solution.
    • Der Pfad zu einem Verzeichnis, das ein Projekt oder eine Projektmappe enthält.Path to a directory that contains a project or a solution.
    • Der Pfad zur DLL-Datei eines Testprojekts.Path to a test project .dll file.

    Ist dieses Argument nicht angegeben, wird nach einem Projekt oder einer Projektmappe im aktuellen Verzeichnis gesucht.If not specified, it searches for a project or a solution in the current directory.

OptionenOptions

  • -a|--test-adapter-path <ADAPTER_PATH>

    Der Pfad zu einem Verzeichnis, das nach zusätzlichen Testadaptern durchsucht werden soll.Path to a directory to be searched for additional test adapters. Nur DLL-Dateien mit dem Suffix .TestAdapter.dll werden untersucht.Only .dll files with suffix .TestAdapter.dll are inspected. Wenn nichts angegeben ist, wird das Verzeichnis der Test-DLL durchsucht.If not specified, the directory of the test .dll is searched.

  • --blame

    Führt die Tests im blame-Modus aus.Runs the tests in blame mode. Diese Option hilft beim Isolieren von fehlerhaften Tests, die den Absturz des Testhosts verursachen.This option is helpful in isolating problematic tests that cause the test host to crash. Wenn ein Absturz erkannt wird, wird in TestResults/<Guid>/<Guid>_Sequence.xml eine Sequenzdatei erstellt, die die Reihenfolge der Tests erfasst, die vor dem Absturz ausgeführt wurden.When a crash is detected, it creates a sequence file in TestResults/<Guid>/<Guid>_Sequence.xml that captures the order of tests that were run before the crash.

  • --blame-crash (Verfügbar seit .NET 5.0 Preview SDK)--blame-crash (Available since .NET 5.0 preview SDK)

    Führt die Tests im Modus „Verantwortung zuweisen“ aus und erfasst ein Absturzabbild, wenn der Testhost unerwartet beendet wird.Runs the tests in blame mode and collects a crash dump when the test host exits unexpectedly. Diese Option wird nur unter Windows unterstützt.This option is only supported on Windows. Ein Verzeichnis, das procdump.exe und procdump64.exe enthält, muss in der PATH- oder PROCDUMP_PATH-Umgebungsvariablen enthalten sein.A directory that contains procdump.exe and procdump64.exe must be in the PATH or PROCDUMP_PATH environment variable. Tools herunterladen.Download the tools. Impliziert --blame.Implies --blame.

  • --blame-crash-dump-type <DUMP_TYPE> (Verfügbar seit .NET 5.0 Preview SDK)--blame-crash-dump-type <DUMP_TYPE> (Available since .NET 5.0 preview SDK)

    Der Typ des zu erfassenden Absturzspeicherabbilds.The type of crash dump to be collected. Impliziert --blame-crash.Implies --blame-crash.

  • --blame-crash-collect-always (Verfügbar seit .NET 5.0 Preview SDK)--blame-crash-collect-always (Available since .NET 5.0 preview SDK)

    Erfasst ein Absturzabbild bei einer erwarteten und einer unerwarteten Beendigung des Testhosts.Collects a crash dump on expected as well as unexpected test host exit.

  • --blame-hang (Verfügbar seit .NET 5.0 Preview SDK)--blame-hang (Available since .NET 5.0 preview SDK)

    Hiermit werden Tests im Modus „Verantwortung zuweisen“ ausgeführt, und ein Blockadeabbild wird erfasst, wenn der Test länger als angegeben dauert.Run the tests in blame mode and collects a hang dump when a test exceeds the given timeout.

  • --blame-hang-dump-type <DUMP_TYPE> (Verfügbar seit .NET 5.0 Preview SDK)--blame-hang-dump-type <DUMP_TYPE> (Available since .NET 5.0 preview SDK)

    Der Typ des zu erfassenden Absturzspeicherabbilds.The type of crash dump to be collected. Möglich sind full, mini oder none.It should be full, mini, or none. Wenn none angegeben wird, wird der Testhost bei einem Timeout beendet, es wird jedoch kein Abbild erfasst.When none is specified, test host is terminated on timeout, but no dump is collected. Impliziert --blame-hang.Implies --blame-hang.

  • --blame-hang-timeout <TIMESPAN> (Verfügbar seit .NET 5.0 Preview SDK)--blame-hang-timeout <TIMESPAN> (Available since .NET 5.0 preview SDK)

    Testspezifisches Timeout, nach dem ein Blockadeabbild ausgelöst und der Testhostprozess beendet wird.Per-test timeout, after which a hang dump is triggered and the test host process is terminated. Der Timeoutwert wird in einem der folgenden Formate angegeben:The timeout value is specified in one of the following formats:

    • 1,5 Std.1.5h
    • 90 Min.90m
    • 5.400 S5400s
    • 5.400.000 ms5400000ms

    Wenn keine Einheit verwendet wird (z. B. 5.400.000), wird angenommen, dass der Wert in Millisekunden angegeben wird.When no unit is used (for example, 5400000), the value is assumed to be in milliseconds. Bei Verwendung in Verbindung mit datenorientierten Tests hängt das Timeoutverhalten vom verwendeten Testadapter ab.When used together with data driven tests, the timeout behavior depends on the test adapter used. Bei xUnit und NUnit wird das Timeout nach jedem Testfall erneuert.For xUnit and NUnit the timeout is renewed after every test case. Für MSTest wird das Timeout für alle Testfälle verwendet.For MSTest, the timeout is used for all test cases. Diese Option wird unter Windows mit netcoreapp2.1 und höher und unter Linux mit netcoreapp3.1 und höher unterstützt.This option is supported on Windows with netcoreapp2.1 and later, and on Linux with netcoreapp3.1 and later. macOS wird nicht unterstützt.macOS is not supported.

  • -c|--configuration <CONFIGURATION>

    Legt die Buildkonfiguration fest.Defines the build configuration. Der Standardwert ist Debug, aber die Konfiguration des Projekts könnte diese SDK-Standardeinstellung überschreiben.The default value is Debug, but your project's configuration could override this default SDK setting.

  • --collect <DATA_COLLECTOR_NAME>

    Aktiviert den Datensammler für den Testlauf.Enables data collector for the test run. Weitere Informationen finden Sie unter Monitor and analyze test run (Überwachen und Analysieren eines Testlaufs).For more information, see Monitor and analyze test run.

    Um Code Coverage auf einer beliebigen Plattform zu erfassen, die von .NET Core unterstützt wird, installieren Sie Coverlet und verwenden die --collect:"XPlat Code Coverage"-Option.To collect code coverage on any platform that is supported by .NET Core, install Coverlet and use the --collect:"XPlat Code Coverage" option.

    Unter Windows können Sie Code Coverage mithilfe der --collect "Code Coverage"-Option erfassen.On Windows, you can collect code coverage by using the --collect "Code Coverage" option. Mit dieser Option wird eine COVERAGE-Datei generiert, die in Visual Studio 2019 Enterprise geöffnet werden kann.This option generates a .coverage file, which can be opened in Visual Studio 2019 Enterprise. Weitere Informationen finden Sie unter Verwenden von Code Coverage und Anpassen der Code Coverage-Analyse.For more information, see Use code coverage and Customize code coverage analysis.

  • -d|--diag <LOG_FILE>

    Aktiviert den Diagnosemodus für die Testplattform und schreibt Diagnosemeldungen in die angegebene Datei sowie in benachbarte Dateien.Enables diagnostic mode for the test platform and writes diagnostic messages to the specified file and to files next to it. Der Prozess, der die Meldungen protokolliert, bestimmt, welche Dateien erstellt werden, z. B. *.host_<date>.txt für das Testhostprotokoll und *.datacollector_<date>.txt für das Datensammlerprotokoll.The process that is logging the messages determines which files are created, such as *.host_<date>.txt for test host log, and *.datacollector_<date>.txt for data collector log.

  • -f|--framework <FRAMEWORK>

    Erzwingt die Verwendung von dotnet oder des .NET Framework-Testhosts für die Testbinärdateien.Forces the use of dotnet or .NET Framework test host for the test binaries. Mit dieser Option wird nur der zu verwendende Hosttyp bestimmt.This option only determines which type of host to use. Die tatsächliche zu verwendende Frameworkversion wird durch die runtimeconfig.json des Testprojekts bestimmt.The actual framework version to be used is determined by the runtimeconfig.json of the test project. Wenn nichts angegeben ist, wird das TargetFramework-Assemblyattribut verwendet, um den Hosttyp zu bestimmen.When not specified, the TargetFramework assembly attribute is used to determine the type of host. Wenn dieses Attribut von der DLL entfernt wird, wird der .NET Framework-Host verwendet.When that attribute is stripped from the .dll, the .NET Framework host is used.

  • --filter <EXPRESSION>

    Filtert Tests im aktuellen Projekt mithilfe des angegebenen Ausdrucks heraus.Filters out tests in the current project using the given expression. Weitere Informationen finden Sie im Abschnitt Details zu Filteroptionen.For more information, see the Filter option details section. Weitere Informationen und Beispiele zur Verwendung von selektiven Komponententestfiltern finden Sie unter Ausführen von selektiven Komponententests.For more information and examples on how to use selective unit test filtering, see Running selective unit tests.

  • -h|--help

    Druckt eine kurze Hilfe für den Befehl.Prints out a short help for the command.

  • --interactive

    Ermöglicht dem Befehl, anzuhalten und auf Benutzereingaben oder Aktionen zu warten.Allows the command to stop and wait for user input or action. Beispielsweise, um die Authentifizierung abzuschließen.For example, to complete authentication. Verfügbar seit .NET Core 3.0 SDK.Available since .NET Core 3.0 SDK.

  • -l|--logger <LOGGER>

    Gibt eine Protokollierung für die Testergebnisse an.Specifies a logger for test results. Im Gegensatz zu MSBuild akzeptiert der Befehl „dotnet test“ keine Abkürzungen: verwenden Sie -l "console;verbosity=detailed" anstelle von -l "console;v=d".Unlike MSBuild, dotnet test doesn't accept abbreviations: instead of -l "console;v=d" use -l "console;verbosity=detailed".

  • --no-build

    Erstellt das Projekt nicht vor der Ausführung.Doesn't build the test project before running it. Zudem wird das Flag --no-restore implizit festgelegt.It also implicitly sets the - --no-restore flag.

  • --nologo

    Führen Sie Tests aus, ohne das Microsoft TestPlatform-Banner anzuzeigen.Run tests without displaying the Microsoft TestPlatform banner. Verfügbar seit .NET Core 3.0 SDK.Available since .NET Core 3.0 SDK.

  • --no-restore

    Führt keine implizite Wiederherstellung aus, wenn der Befehl ausgeführt wird.Doesn't execute an implicit restore when running the command.

  • -o|--output <OUTPUT_DIRECTORY>

    Verzeichnis, in dem die auszuführenden Binärdateien zu finden sind.Directory in which to find the binaries to run. Wenn nicht angegeben, ist der Standardpfad ./bin/<configuration>/<framework>/.If not specified, the default path is ./bin/<configuration>/<framework>/. Bei Projekten mit mehreren Zielframeworks (über die TargetFrameworks-Eigenschaft) müssen Sie auch --framework definieren, wenn Sie diese Option angeben.For projects with multiple target frameworks (via the TargetFrameworks property), you also need to define --framework when you specify this option. dotnet test führt Tests immer über das Ausgabeverzeichnis aus.dotnet test always runs tests from the output directory. Sie können AppDomain.BaseDirectory verwenden, um die Testobjekte im Ausgabeverzeichnis zu verarbeiten.You can use AppDomain.BaseDirectory to consume test assets in the output directory.

  • -r|--results-directory <RESULTS_DIR>

    Das Verzeichnis, in dem die Testergebnisse gespeichert werden.The directory where the test results are going to be placed. Wenn das Verzeichnis noch nicht vorhanden ist, wird es erstellt.If the specified directory doesn't exist, it's created. Der Standardwert ist TestResults in dem Verzeichnis, das die Projektdatei enthält.The default is TestResults in the directory that contains the project file.

  • --runtime <RUNTIME_IDENTIFIER>

    Die Zielruntime, für die Tests ausgeführt werden sollen.The target runtime to test for.

  • -s|--settings <SETTINGS_FILE>

    Die .runsettings-Datei, die zum Ausführen der Tests verwendet wird.The .runsettings file to use for running the tests. Das TargetPlatform-Element (x86|x64) hat keine Auswirkung auf dotnet test.The TargetPlatform element (x86|x64) has no effect for dotnet test. Installieren Sie die x86-Version von .NET Core, um x86-Tests auszuführen.To run tests that target x86, install the x86 version of .NET Core. Die Bitanzahl der Datei dotnet.exe, die sich in diesem Pfad befindet, wird zum Ausführen von Tests verwendet.The bitness of the dotnet.exe that is on the path is what will be used for running tests. Weitere Informationen finden Sie in den folgenden Ressourcen:For more information, see the following resources:

  • -t|--list-tests

    Hiermit werden die gefundenen Tests aufgelistet, anstatt sie auszuführen.List the discovered tests instead of running the tests.

  • -v|--verbosity <LEVEL>

    Legt den Ausführlichkeitsgrad für den Befehl fest.Sets the verbosity level of the command. Zulässige Werte sind q[uiet], m[inimal], n[ormal], d[etailed] und diag[nostic].Allowed values are q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]. Der Standardwert ist minimal.The default is minimal. Weitere Informationen finden Sie unter LoggerVerbosity.For more information, see LoggerVerbosity.

  • RunSettings -ArgumenteRunSettings arguments

Inline-RunSettings werden als die letzten Argumente auf der Befehlszeile nach „-- “ (beachten Sie das Leerzeichen hinter „--“) übergeben.Inline RunSettings are passed as the last arguments on the command line after "-- " (note the space after --). Inline-RunSettings werden als [name]=[value]-Paare angegeben.Inline RunSettings are specified as [name]=[value] pairs. Ein Leerzeichen wird verwendet, um mehrere [name]=[value]-Paare voneinander zu trennen.A space is used to separate multiple [name]=[value] pairs.

Ein Beispiel: dotnet test -- MSTest.DeploymentEnabled=false MSTest.MapInconclusiveToFailed=TrueExample: dotnet test -- MSTest.DeploymentEnabled=false MSTest.MapInconclusiveToFailed=True

Weitere Informationen finden Sie unter Übergeben von RunSettings-Argumenten über die Befehlszeile.For more information, see Passing RunSettings arguments through command line.

BeispieleExamples

  • Führen Sie die Tests im Projekt im aktuellen Verzeichnis durch:Run the tests in the project in the current directory:

    dotnet test
    
  • Führen Sie die Tests im Projekt test1 durch:Run the tests in the test1 project:

    dotnet test ~/projects/test1/test1.csproj
    
  • Mit dem folgenden Befehl führen Sie die Tests im aktuellen Verzeichnis aus und generieren eine Testergebnisdatei im TRX-Format:Run the tests in the project in the current directory, and generate a test results file in the trx format:

    dotnet test --logger trx
    
  • Führen Sie die Tests im Projekt im aktuellen Verzeichnis aus, und generieren Sie eine Code-Coverage-Datei (nach der Installation der Integration von Coverlet-Collectors):Run the tests in the project in the current directory, and generate a code coverage file (after installing Coverlet collectors integration):

    dotnet test --collect:"XPlat Code Coverage"
    
  • Führen Sie die Tests im Projekt im aktuellen Verzeichnis aus, und generieren Sie eine Code Coverage-Datei (nur Windows):Run the tests in the project in the current directory, and generate a code coverage file (Windows only):

    dotnet test --collect "Code Coverage"
    
  • Mit dem folgenden Befehl führen Sie die Tests im aktuellen Verzeichnis aus und erstellen ein ausführliches Protokoll in der Konsole:Run the tests in the project in the current directory, and log with detailed verbosity to the console:

    dotnet test --logger "console;verbosity=detailed"
    
  • Mit dem folgenden Befehl führen Sie die Tests in dem Projekt im aktuellen Verzeichnis aus und melden Tests, die während des Absturzes des Testhosts in Arbeit waren:Run the tests in the project in the current directory, and report tests that were in progress when the test host crashed:

    dotnet test --blame
    

Details zu FilteroptionenFilter option details

--filter <EXPRESSION>

<Expression> weist das Format <property><operator><value>[|&<Expression>] auf.<Expression> has the format <property><operator><value>[|&<Expression>].

<property> ist ein Attribut von Test Case.<property> is an attribute of the Test Case. Im Folgenden werden die Eigenschaften aufgeführt, die von gängigen Frameworks für Komponententests unterstützt werden:The following are the properties supported by popular unit test frameworks:

TestframeworkTest Framework Unterstützte EigenschaftenSupported properties
MSTestMSTest
  • FullyQualifiedNameFullyQualifiedName
  • nameName
  • ClassNameClassName
  • PrioritätPriority
  • TestCategoryTestCategory
xUnitxUnit
  • FullyQualifiedNameFullyQualifiedName
  • DisplayNameDisplayName
  • MerkmaleTraits
NUnitNUnit
  • FullyQualifiedNameFullyQualifiedName
  • nameName
  • TestCategoryTestCategory
  • PrioritätPriority

<operator> beschreibt die Beziehung zwischen der Eigenschaft und dem Wert:The <operator> describes the relationship between the property and the value:

OperatorOperator FunktionFunction
= Genaue ÜbereinstimmungExact match
!= Keine genaue ÜbereinstimmungNot exact match
~ EnthältContains
!~ Enthält nichtNot contains

<value> ist eine Zeichenfolge.<value> is a string. Bei allen Suchvorgängen ist die Groß-/Kleinschreibung nicht relevant.All the lookups are case insensitive.

Ein Ausdruck ohne <operator> gilt automatisch als contains für die FullyQualifiedName-Eigenschaft (dotnet test --filter xyz ist beispielsweise identisch mit dotnet test --filter FullyQualifiedName~xyz).An expression without an <operator> is automatically considered as a contains on FullyQualifiedName property (for example, dotnet test --filter xyz is same as dotnet test --filter FullyQualifiedName~xyz).

Ausdrücke können mit bedingten Operatoren verknüpft werden:Expressions can be joined with conditional operators:

OperatorOperator FunktionFunction
| ODEROR      
& UNDAND

Sie können Ausdrücke in Klammern einschließen, wenn Sie bedingte Operatoren verwenden (z.B. (Name~TestMethod1) | (Name~TestMethod2)).You can enclose expressions in parenthesis when using conditional operators (for example, (Name~TestMethod1) | (Name~TestMethod2)).

Weitere Informationen und Beispiele zur Verwendung von selektiven Komponententestfiltern finden Sie unter Ausführen von selektiven Komponententests.For more information and examples on how to use selective unit test filtering, see Running selective unit tests.

Siehe auchSee also