Question: 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?

Answer: 
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
}

```
There is an `Assert.Inconclusive()` method which you can use to nicely skip the current test. Check the [docs](https://learn.microsoft.com/en-us/dotnet/api/microsoft.visualstudio.testtools.unittesting.assert.inconclusive?view=mstest-net-1.2.0). Basically it will throw an exception and will show this method as `Skipped`.

I used this as a programmatic check in my code inside the test method:

```
if (!IsEnvironmentConfigured())
{
   Assert.Inconclusive("Some message");
}

```

Here is the result:

```
! ShouldTestThisMethod [31ms]

Test Run Successful.
Total tests: 92
     Passed: 91
    Skipped: 1
 Total time: 1.2518 Seconds

```