【.NET】NUnitで「明示的に」実行したときだけ実行されるテストを作るExplicit属性の使い方

NUnitで「明示的に」実行したときだけ実行されるテストを作るExplicit属性の使い方です

Explicit属性

NUnitのExplicit属性を使うと、「このテストは普段は実行したくないけど、必要な時には明示的に実行したい」というケースに対応できます。
この「明示的に」について、具体的には以下のケースで実行されます

  • IDEで個別に項目を選択して実行したとき
  • コマンドラインで明示的にフィルタを追加したとき
    • 例: dotnet test --filter "FullyQualifiedName~TestName"

Run All Testsボタンやフィルタなしのコマンドライン実行、またカテゴリやアセンブリ単位の一括実行時には実行されません。

使い方

使い方は簡単で、Test属性に加えてExplicit属性をつけるだけです。

[TestFixture]
public class DatabaseTests
{
    [Test]
    [Explicit]
    public async Task BackupProduction_Manual()
    {
        // 本番環境のバックアップ処理
        await _productionDb.CreateBackupAsync();
    }
    
    [Test]
    [Explicit("10分以上かかります")] // 理由を書いておくと便利
    public void LoadTest_Manual()
    {
        // 負荷テスト
        RunHeavyLoadTest();
    }
}