そのため、テストメソッド本体から現在のテストをスキップする必要がある場合があります。最も簡単な方法は、テストメソッドでこのようなものを書くことです。
if (something) return;
しかし、私には非常に複雑なテストがあり、現在のテストメソッド本体で呼び出すメソッドからテストをスキップする方法が必要です。出来ますか?
他の回答(および提案)に加えて:Assert.Inconclusive
over Assert.Fail
を使用することをお勧めします。元の投稿者の状況は明示的な失敗のケースではないからです。
結果としてInconclusive
を使用すると、テストが成功したか失敗したかがわからないことが明確になります。これは重要な違いです。成功を証明しないことは、常に失敗とは限りません!
この方法でテストをスキップしないでください。次のいずれかを実行することをお勧めします。
[Ignore]
_属性を介してテストに無視のマークを付けますNotImplementedException
を投げるAssert.Fail()
を記述します(そうしないと、このテストの完了を忘れることがあります)また、テストには条件付きロジックを含めないでください。代わりに、2つのテストを作成する必要があります-コードパスごとに個別のテスト(テストする条件を説明する名前付き)。だから、書く代わりに:
_[TestMethod]
public void TestFooBar()
{
// Assert foo
if (!bar)
return;
// Assert bar
}
_
2つのテストを作成します。
_[TestMethod]
public void TestFoo()
{
// set bar == false
// Assert foo
}
[Ignore] // you can ignore this test
[TestMethod]
public void TestBar()
{
// set bar == true
// Assert bar
}
_
テストを無視して、コード内で完全にそのままにしておくことができます。
[TestMethod()]
[Ignore()] //ignores the test below
public void SomeTestCodeTest()
{
//test code here
}