52

Is there a way for an NUnit test to end and tell the test runner that it should be considered skipped/ignored, rather than succeeded or failed?

My motivation for this is that I have a few tests that don't apply in certain circumstances, but this can't be determined until the test (or maybe the fixture) starts running.

Obviously in these circumstances I could just return from the test and allow it to succeed, but (a) this seems wrong and (b) I'd like to know that tests have been skipped.

I am aware of the [Ignore] attribute, but this is compiled-in. I'm looking for a run-time, programmatic equivalent. Something like:

if (testNotApplicable)
    throw new NUnit.Framework.IgnoreTest("Not applicable");

Or is programmatically skipping a test just wrong? If so, what should I be doing?

0

2 Answers 2

53
Assert.Ignore();

is specifically what you're asking for, though there is also:

Assert.Inconclusive();

Documentation:

https://docs.nunit.org/articles/nunit/writing-tests/assertions/special-assertions/Assert.Inconclusive.html

https://docs.nunit.org/articles/nunit/writing-tests/assertions/special-assertions/Assert.Ignore.html

1
  • 2
    Thanks! I can't believe I missed Assert.Ignore, but it just what I need. It looks like Assert.Inconclusive was introduced in nunit 2.5 and, since I'm still using 2.4.8, I at least have an excuse for not knowing about that one... Commented Nov 4, 2010 at 10:19
2

I am having a TestInit(), TestInitialize method where there is a condition like:

    //This flag is the most important.False means we want to just ignore that tests
    if (!RunFullTests)
        Assert.Inconclusive();

RunFullTests is a global Boolean variable located in a constant class. If we set this to false the whole test class will be ignored and all the tests under this class will be ignored.

I use this when there are integration tests.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.