dotnet testdotnet test

この記事の対象: ✔️ .NET Core 2.1 SDK 以降のバージョンThis article applies to: ✔️ .NET Core 2.1 SDK and later versions

名前Name

dotnet test - 単体テストを実行するために使用される .NET テスト ドライバー。dotnet test - .NET test driver used to execute unit tests.

構文Synopsis

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

説明Description

dotnet test コマンドは、指定されたソリューションで単体テストを実行する場合に使用されます。The dotnet test command is used to execute unit tests in a given solution. dotnet test コマンドを実行すると、ソリューションがビルドされ、ソリューション内の各テスト プロジェクトのテスト ホスト アプリケーションが実行されます。The dotnet test command builds the solution and runs a test host application for each test project in the solution. テスト ホストは、指定されたプロジェクトで、テスト フレームワークを使用してテストを実行します。たとえば、MSTest、NUnit、xUnit などです。そして、各テストの成功または失敗を報告します。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. すべてのテストが成功した場合、テスト ランナーは 0 の終了コードを返します。それ以外の、いずれかのテストに失敗した場合は、1 を返します。If all tests are successful, the test runner returns 0 as an exit code; otherwise if any test fails, it returns 1.

複数の対象を持つプロジェクトでは、対象となる各フレームワークに対してテストが実行されます。For multi-targeted projects, tests are run for each targeted framework. テスト ホストと単体テスト フレームワークは、NuGet パッケージとしてパッケージ化され、プロジェクトの通常の依存関係として復元されます。The test host and the unit test framework are packaged as NuGet packages and are restored as ordinary dependencies for the project.

テスト プロジェクトでは、通常の <PackageReference> 要素を使用してテスト ランナーを指定します。次のサンプル プロジェクト ファイルのようになります。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>

Microsoft.NET.Test.Sdk がテスト ホストの場合、xunit はテスト フレームワークです。Where Microsoft.NET.Test.Sdk is the test host, xunit is the test framework. また、xunit.runner.visualstudio はテスト アダプターであり、xUnit フレームワークはテスト ホストと連携できます。And xunit.runner.visualstudio is a test adapter, which allows the xUnit framework to work with the test host.

暗黙的な復元Implicit restore

dotnet restore を実行する必要がなくなりました。復元を必要とするすべてのコマンド (dotnet newdotnet builddotnet rundotnet testdotnet publishdotnet 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. 暗黙的な復元を無効にするには、--no-restore オプションを使用します。To disable implicit restore, use the --no-restore option.

Azure DevOps Services の継続的インテグレーション ビルドなどの、明示的な復元が意味のある一部のシナリオや、復元が行われるタイミングを明示的に制御する必要があるビルド システムでは、dotnet restore は引き続き有用なコマンドです。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.

NuGet フィードの管理方法については、dotnet restore のドキュメントをご覧ください。For information about how to manage NuGet feeds, see the dotnet restore documentation.

引数Arguments

  • PROJECT | SOLUTION | DIRECTORY | DLL

    • テスト プロジェクトへのパス。Path to the test project.
    • ソリューションへのパス。Path to the solution.
    • プロジェクトまたはソリューションを含むディレクトリへのパス。Path to a directory that contains a project or a solution.
    • テスト プロジェクト " .dll" ファイルへのパス。Path to a test project .dll file.

    指定されていない場合、プロジェクトまたはソリューションが現在のディレクトリで検索されます。If not specified, it searches for a project or a solution in the current directory.

オプションOptions

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

    追加のテスト アダプターを検索するディレクトリへのパス。Path to a directory to be searched for additional test adapters. サフィックス .TestAdapter.dll を持つ " .dll" ファイルのみが検査されます。Only .dll files with suffix .TestAdapter.dll are inspected. 指定しない場合、テスト " .dll" のディレクトリが検索されます。If not specified, the directory of the test .dll is searched.

  • --blame

    変更履歴モードでテストを実行します。Runs the tests in blame mode. このオプションは、テスト ホストがクラッシュする原因となる問題のあるテストを分離するために役立ちます。This option is helpful in isolating problematic tests that cause the test host to crash. クラッシュが検出されると、クラッシュ前に実行されたテストの順序をキャプチャするシーケンス ファイルが TestResults/<Guid>/<Guid>_Sequence.xml に作成されます。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 (.NET 5.0 プレビュー SDK 以降で利用可能)--blame-crash (Available since .NET 5.0 preview SDK)

    テスト ホストが予期せずに終了した場合に、変更履歴モードでテストを実行して、クラッシュ ダンプを収集します。Runs the tests in blame mode and collects a crash dump when the test host exits unexpectedly. このオプションは、Windows 上でのみサポートされます。This option is only supported on Windows. procdump.exe および procdump64.exe を含むディレクトリが、PATH または PROCDUMP_PATH 環境変数に指定されている必要があります。A directory that contains procdump.exe and procdump64.exe must be in the PATH or PROCDUMP_PATH environment variable. ツールをダウンロードします。Download the tools. --blame を意味します。Implies --blame.

  • --blame-crash-dump-type <DUMP_TYPE> (.NET 5.0 プレビュー SDK 以降で利用可能)--blame-crash-dump-type <DUMP_TYPE> (Available since .NET 5.0 preview SDK)

    収集されるクラッシュ ダンプの種類。The type of crash dump to be collected. --blame-crash を意味します。Implies --blame-crash.

  • --blame-crash-collect-always (.NET 5.0 プレビュー SDK 以降で利用可能)--blame-crash-collect-always (Available since .NET 5.0 preview SDK)

    予期しないテスト ホストの終了だけでなく、予期されていたものに対しても、クラッシュ ダンプを収集します。Collects a crash dump on expected as well as unexpected test host exit.

  • --blame-hang (.NET 5.0 プレビュー SDK 以降で利用可能)--blame-hang (Available since .NET 5.0 preview SDK)

    変更履歴モードでテストを実行し、テストが指定のタイムアウトを超えたときにハング ダンプを収集します。Run the tests in blame mode and collects a hang dump when a test exceeds the given timeout.

  • --blame-hang-dump-type <DUMP_TYPE> (.NET 5.0 プレビュー SDK 以降で利用可能)--blame-hang-dump-type <DUMP_TYPE> (Available since .NET 5.0 preview SDK)

    収集されるクラッシュ ダンプの種類。The type of crash dump to be collected. 必ず、fullmini、または none になります。It should be full, mini, or none. none が指定されている場合、タイムアウト時にテスト ホストが終了されますが、ダンプは収集されません。When none is specified, test host is terminated on timeout, but no dump is collected. --blame-hang を意味します。Implies --blame-hang.

  • --blame-hang-timeout <TIMESPAN> (.NET 5.0 プレビュー SDK 以降で利用可能)--blame-hang-timeout <TIMESPAN> (Available since .NET 5.0 preview SDK)

    テストごとのタイムアウト。その後、ハング ダンプがトリガーされ、テスト ホスト プロセスが終了されます。Per-test timeout, after which a hang dump is triggered and the test host process is terminated. タイムアウト値は、次のいずれかの形式で指定されます。The timeout value is specified in one of the following formats:

    • 1.5h (時間)1.5h
    • 90m (分)90m
    • 5400s (秒)5400s
    • 5400000ms (ミリ秒)5400000ms

    単位が使用されていない場合 (例: 5400000)、値はミリ秒単位であると見なされます。When no unit is used (for example, 5400000), the value is assumed to be in milliseconds. データ ドリブン テストと共に使用すると、タイムアウトの動作は、利用するテスト アダプターに応じて異なります。When used together with data driven tests, the timeout behavior depends on the test adapter used. xUnit および NUnit の場合、タイムアウトはテスト ケースの後に毎回更新されます。For xUnit and NUnit the timeout is renewed after every test case. MSTest の場合、すべてのテスト ケースにこのタイムアウトが使用されます。For MSTest, the timeout is used for all test cases. このオプションは、netcoreapp 2.1 以降がインストールされている Windows と、netcoreapp 3.1 以降がインストールされている Linux でサポートされています。This option is supported on Windows with netcoreapp2.1 and later, and on Linux with netcoreapp3.1 and later. macOS はサポートされていません。macOS is not supported.

  • -c|--configuration <CONFIGURATION>

    ビルド構成を定義します。Defines the build configuration. 既定値は Debug ですが、プロジェクトの構成がこの既定の SDK 設定をオーバーライドする可能性があります。The default value is Debug, but your project's configuration could override this default SDK setting.

  • --collect <DATA_COLLECTOR_NAME>

    テストの実行のためのデータ コレクターを有効にします。Enables data collector for the test run. 詳細については、「Monitor and analyze test run」 (テストの実行のモニターと分析) を参照してください。For more information, see Monitor and analyze test run.

    .NET Core でサポートされている任意のプラットフォーム上のコード カバレッジを収集するには、Coverlet をインストールし、--collect:"XPlat Code Coverage" オプションを使用します。To collect code coverage on any platform that is supported by .NET Core, install Coverlet and use the --collect:"XPlat Code Coverage" option.

    Windows では、--collect "Code Coverage" オプションを使用してコード カバレッジを収集できます。On Windows, you can collect code coverage by using the --collect "Code Coverage" option. このオプションを選択すると、 .coverage ファイルが生成されます。このファイルは、Visual Studio 2019 Enterprise で開くことができます。This option generates a .coverage file, which can be opened in Visual Studio 2019 Enterprise. 詳細については、コード カバレッジの使用に関するページと「コード カバレッジ分析のカスタマイズ」を参照してください。For more information, see Use code coverage and Customize code coverage analysis.

  • -d|--diag <LOG_FILE>

    テスト プラットフォームの診断モードを有効にし、指定したファイルとそれ以降のファイルに診断メッセージを出力します。Enables diagnostic mode for the test platform and writes diagnostic messages to the specified file and to files next to it. メッセージをログに記録するプロセスによって、テスト ホスト ログの *.host_<date>.txt やデータ コレクター ログの *.datacollector_<date>.txt などの、作成されるファイルが決まります。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>

    テスト バイナリに dotnet または .NET Framework テスト ホストを強制的に使用します。Forces the use of dotnet or .NET Framework test host for the test binaries. このオプションでは、使用するホストの種類のみが決定されます。This option only determines which type of host to use. 実際に使用されるフレームワークのバージョンは、テスト プロジェクトの "runtimeconfig. json" によって決まります。The actual framework version to be used is determined by the runtimeconfig.json of the test project. 指定しない場合、TargetFramework アセンブリ属性 を使用してホストの種類が決定されます。When not specified, the TargetFramework assembly attribute is used to determine the type of host. その属性が " .dll" から削除されると、.NET Framework ホストが使用されます。When that attribute is stripped from the .dll, the .NET Framework host is used.

  • --filter <EXPRESSION>

    指定された式を使用して、現在のプロジェクト内のテストを除外します。Filters out tests in the current project using the given expression. 詳細については、「フィルター オプションの詳細」セクションをご覧ください。For more information, see the Filter option details section. 選択的単体テストのフィルター処理の使用方法に関する詳細と例については、「選択的単体テストの実行」をご覧ください。For more information and examples on how to use selective unit test filtering, see Running selective unit tests.

  • -h|--help

    コマンドの短いヘルプを印刷します。Prints out a short help for the command.

  • --interactive

    コマンドを停止して、ユーザーの入力または操作のために待機させることができます。Allows the command to stop and wait for user input or action. たとえば、認証を完了する場合があります。For example, to complete authentication. .NET Core 3.0 SDK 以降で使用できます。Available since .NET Core 3.0 SDK.

  • -l|--logger <LOGGER>

    テスト結果のロガーを指定します。Specifies a logger for test results. MSBuild とは異なり、dotnet テストでは省略形は受け入れられません。-l "console;v=d" ではなく -l "console;verbosity=detailed" を使用してください。Unlike MSBuild, dotnet test doesn't accept abbreviations: instead of -l "console;v=d" use -l "console;verbosity=detailed".

  • --no-build

    実行前にテスト プロジェクトをビルドしません。Doesn't build the test project before running it. また、- --no-restore フラグが暗黙的に設定されます。It also implicitly sets the - --no-restore flag.

  • --nologo

    Microsoft TestPlatform バナーを表示せずにテストを実行します。Run tests without displaying the Microsoft TestPlatform banner. .NET Core 3.0 SDK 以降で使用できます。Available since .NET Core 3.0 SDK.

  • --no-restore

    コマンドを実行するときに、暗黙的な復元を実行しません。Doesn't execute an implicit restore when running the command.

  • -o|--output <OUTPUT_DIRECTORY>

    実行するバイナリを検索するディレクトリです。Directory in which to find the binaries to run. 指定しない場合、既定のパスは ./bin/<configuration>/<framework>/ になります。If not specified, the default path is ./bin/<configuration>/<framework>/. (TargetFrameworks プロパティを使用した) ターゲット フレームワークが複数あるプロジェクトの場合は、このオプションを指定するときに --framework も定義する必要があります。For projects with multiple target frameworks (via the TargetFrameworks property), you also need to define --framework when you specify this option. dotnet test では常に、出力ディレクトリからテストが実行されます。dotnet test always runs tests from the output directory. AppDomain.BaseDirectory を使用して、出力ディレクトリ内のテスト資産を使用できます。You can use AppDomain.BaseDirectory to consume test assets in the output directory.

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

    テスト結果が配置されるディレクトリです。The directory where the test results are going to be placed. 指定されたディレクトリが存在しない場合は、作成されます。If the specified directory doesn't exist, it's created. 既定値は、プロジェクト ファイルが含まれるディレクトリの TestResults です。The default is TestResults in the directory that contains the project file.

  • --runtime <RUNTIME_IDENTIFIER>

    テスト対象のターゲット ランタイム。The target runtime to test for.

  • -s|--settings <SETTINGS_FILE>

    テストの実行に使用する .runsettings ファイルです。The .runsettings file to use for running the tests. TargetPlatform 要素 (x86|x64) は dotnet test には影響しません。The TargetPlatform element (x86|x64) has no effect for dotnet test. x86 を対象とするテストを実行するには、x86 バージョンの .NET Core をインストールします。To run tests that target x86, install the x86 version of .NET Core. パスにある dotnet.exe のビットは、テストを実行するために使用されるものです。The bitness of the dotnet.exe that is on the path is what will be used for running tests. 詳細については、次のリソースを参照してください。For more information, see the following resources:

  • -t|--list-tests

    テストを実行する代わりに、検出されたテストを一覧表示します。List the discovered tests instead of running the tests.

  • -v|--verbosity <LEVEL>

    コマンドの詳細レベルを設定します。Sets the verbosity level of the command. 指定できる値は、q[uiet]m[inimal]n[ormal]d[etailed]、および diag[nostic] です。Allowed values are q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]. 既定値は、minimal です。The default is minimal. 詳細については、「LoggerVerbosity」を参照してください。For more information, see LoggerVerbosity.

  • RunSettings 引数RunSettings arguments

インラインの RunSettings は、コマンド ラインの最後の引数として "-- " の後に渡されます (-- の後のスペースに注意してください)。Inline RunSettings are passed as the last arguments on the command line after "-- " (note the space after --). インラインの RunSettings[name]=[value] のペアとして指定されます。Inline RunSettings are specified as [name]=[value] pairs. 複数の [name]=[value] のペアを区切るにはスペースを使用します。A space is used to separate multiple [name]=[value] pairs.

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

詳しくは、「コマンド ラインで RunSettings 引数を渡す」をご覧ください。For more information, see Passing RunSettings arguments through command line.

使用例Examples

  • 現在のディレクトリのプロジェクトでテストを実行します。Run the tests in the project in the current directory:

    dotnet test
    
  • test1 プロジェクトでテストを実行します。Run the tests in the test1 project:

    dotnet test ~/projects/test1/test1.csproj
    
  • 現在のディレクトリでプロジェクトのテストを実行し、trx 形式でテスト結果ファイルを生成します。Run the tests in the project in the current directory, and generate a test results file in the trx format:

    dotnet test --logger trx
    
  • 現在のディレクトリでプロジェクトのテストを実行し、(Coverlet コレクター統合をインストールした後) コード カバレッジ ファイルを生成します。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"
    
  • 現在のディレクトリでプロジェクトのテストを実行し、コード カバレッジ ファイルを生成します (Windows のみ)。Run the tests in the project in the current directory, and generate a code coverage file (Windows only):

    dotnet test --collect "Code Coverage"
    
  • 現在のディレクトリでプロジェクトのテストを実行し、詳細をコンソールに記録します。Run the tests in the project in the current directory, and log with detailed verbosity to the console:

    dotnet test --logger "console;verbosity=detailed"
    
  • 現在のディレクトリのプロジェクトでテストを実行し、テスト ホストがクラッシュしたときに実行されていたテストを報告します。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
    

フィルター オプションの詳細Filter option details

--filter <EXPRESSION>

<Expression> の形式は <property><operator><value>[|&<Expression>] です。<Expression> has the format <property><operator><value>[|&<Expression>].

<property>Test Case の属性です。<property> is an attribute of the Test Case. よく利用される単体テスト フレームワークでサポートされるプロパティは以下の通りです。The following are the properties supported by popular unit test frameworks:

テスト フレームワークTest Framework サポートされるプロパティSupported properties
MSTestMSTest
  • FullyQualifiedNameFullyQualifiedName
  • 名前Name
  • ClassNameClassName
  • 優先度Priority
  • TestCategoryTestCategory
xUnitxUnit
  • FullyQualifiedNameFullyQualifiedName
  • DisplayNameDisplayName
  • TraitsTraits
NUnitNUnit
  • FullyQualifiedNameFullyQualifiedName
  • 名前Name
  • TestCategoryTestCategory
  • 優先度Priority

<operator> は、プロパティと値の関係を示します。The <operator> describes the relationship between the property and the value:

演算子Operator 関数Function
= 完全一致Exact match
!= 完全一致ではないNot exact match
~ 内容Contains
!~ 含まないNot contains

<value> は文字列です。<value> is a string. すべての参照で大文字と小文字が区別されます。All the lookups are case insensitive.

<operator> を含まない式は、自動的に FullyQualifiedName プロパティの contains とみなされます (たとえば、dotnet test --filter xyzdotnet 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).

式は条件演算子を使用して結合できます。Expressions can be joined with conditional operators:

演算子Operator 関数Function
| OROR      
& ANDAND

条件演算子を使用する場合は、式をかっこで囲みます (例: (Name~TestMethod1) | (Name~TestMethod2))。You can enclose expressions in parenthesis when using conditional operators (for example, (Name~TestMethod1) | (Name~TestMethod2)).

選択的単体テストのフィルター処理の使用方法に関する詳細と例については、「選択的単体テストの実行」をご覧ください。For more information and examples on how to use selective unit test filtering, see Running selective unit tests.

関連項目See also