Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Programmatically skip an NUnit test

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?

like image 966
Andy Johnson Avatar asked Nov 04 '10 10:11

Andy Johnson


People also ask

How do I skip a NUnit test?

IgnoreAttribute (NUnit 2.0) The ignore attribute is an attribute to not run a test or test fixture for a period of time. The person marks either a Test or a TestFixture with the Ignore Attribute. The running program sees the attribute and does not run the test or tests.

What is TestFixture NUnit?

The [TestFixture] attribute denotes a class that contains unit tests. The [Test] attribute indicates a method is a test method. Save this file and execute dotnet test to build the tests and the class library and then run the tests. The NUnit test runner contains the program entry point to run your tests.

How do I ignore tests in xUnit?

xUnit.net does not require an attribute for a test class; it looks for all test methods in all public (exported) classes in the assembly. Set the Skip parameter on the [Fact] attribute to temporarily skip a test.

Is NUnit automated?

NUnit is an open-source unit testing framework in C# that is ported from JUnit automated testing framework. It is a member of the . Net Foundation and is used for development and execution of unit tests with .


2 Answers

Assert.Ignore(); 

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

Assert.Inconclusive(); 
like image 57
AdaTheDev Avatar answered Sep 23 '22 06:09

AdaTheDev


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.

like image 35
Giannis Grivas Avatar answered Sep 21 '22 06:09

Giannis Grivas