Microsoft unit testing. Is it possible to skip test from test method body?
You should not skip test this way. Better do one of following things:
- mark test as ignored via
[Ignore]
attribute - throw
NotImplementedException
from your test - write
Assert.Fail()
(otherwise you can forget to complete this test) - remove this test
Also keep in mind, that your tests should not contain conditional logic. Instead you should create two tests - separate test for each code path (with name, which describes what conditions you are testing). So, instead of writing:
[TestMethod]
public void TestFooBar()
{
// Assert foo
if (!bar)
return;
// Assert bar
}
Write two tests:
[TestMethod]
public void TestFoo()
{
// set bar == false
// Assert foo
}
[Ignore] // you can ignore this test
[TestMethod]
public void TestBar()
{
// set bar == true
// Assert bar
}
You can ignore a test and leave it completely untouched in the code.
[TestMethod()]
[Ignore()] //ignores the test below
public void SomeTestCodeTest()
{
//test code here
}
Further to other answers (and as suggested): I'd suggest using Assert.Inconclusive
over Assert.Fail
, since the original poster's situation is not an explicit failure case.
Using Inconclusive
as a result makes it clear that you don't know whether the test succeeded or failed - which is an important distinction. Not proving success doesn't always constitute failure!