NUnitからXUnit(C#)に移行していて、自動ビルドプロセスの一部としてテストランナーを実行する必要がない「統合テスト」(IT)をいくつか作成していました。私は通常、手動でテストするためにこれを行います。環境要因(データの欠落など)が原因でエンドツーエンドのプロセス全体が機能しない可能性がある場合です。
NUnitでは、テストに 明示的属性 のマークを付けることができ、テストランナーによってスキップされます(テストに特定の カテゴリ属性 のマークを付けて、そのカテゴリを明示的にターゲットにするテストランナー)。
XUnitには、テストランナーからテストを除外する同様の方法がありますか?
Jimmy Bogardは、NiceRunnableInDebugOnlyAttributeを使用してこれを解決しました。このブログ投稿を参照してください: xUnit.netで明示的にテストを実行します
public class RunnableInDebugOnlyAttribute : FactAttribute
{
public RunnableInDebugOnlyAttribute()
{
if (!Debugger.IsAttached)
{
Skip = "Only running in interactive mode.";
}
}
}
私は 見つけた だと思います。どうやら、次のように_[Fact]
_属性を変更できます:[Fact(Skip="reason")]
。これによりテストはスキップされますが、属性を通常に戻さずに手動で実行する方法はありません。
私はもっと良い方法を探し続けます。
使った
#if DEBUG
// Must test manually with https://docs.Microsoft.com/en-us/sysinternals/downloads/process-Explorer
[Fact]
#endif
したがって、これはビルドサーバーでのテストとは見なされませんが、通常はデバッグバージョンをビルドする開発者は、このテストが失敗することに気付くでしょう。