So I have situation when I need skip current test from test method body. Simplest way is to write something like this in test method.
if (something) return;
But I have a lot complicated tests and I need a way to skip test from methods which I invoke in current test method body. Is it possible?
You should not skip test this way. Better do one of following things:
[Ignore]
attributeNotImplementedException
from your testAssert.Fail()
(otherwise you can forget to complete 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
}