How to get Junit 4 to ignore a Base Test Class?

Viewed 54471

I have a base class for many tests that has some helper methods they all need.

It does not by itself have any tests on it, but JUnit (in eclipse) is invoking the test runner on it and complaining that there are no methods to test.

How can I make it ignore this class?

I know I could add a dummyTest method that would solve the problem, but it would also appear for all the children classes.

Suggestions?

6 Answers

Use to @Ignore annotation. It also works on classes. See this one:

@Ignore public class IgnoreMe {
                        @Test public void test1() { ... }
                        @Test public void test2() { ... }
                }

Also, you can annotate a class containing test methods with @Ignore and none of the containing tests will be executed.

Source: JUnit JavaDoc

Just as a note, I'd always recommend giving a reason for the ignore:

@Ignore("This test will prove bug #123 is fixed, once someone fixes it")

I'm hoping the junit xml report formatter, used when running tests from ant, will one day include the ignored count (and the reasons) along with pass, fail, and error.

JUnit5

@Ignore not exit in the future version, If you are using JUnit5, you can use @Disabled from JUnit Jupiter

import org.junit.jupiter.api.Disabled;

You can even use @Disabled with a comment @Disabled("some comment here")

Class

Annotate the class, will disable all the tests in the class :

@Disabled
public class DemoTest { }

@Disabled("some comment here")
public class DemoTest { }

Method

@Disabled
public void whenCaseThenResult() { }

@Disabled("some comment here")
public void whenCaseThenResult() { }

Adding an empty test works.

@Test(expected = Test.None.class)
public void ATest() {}

Beware, adding it without (expected = Test.None.class) will add an "Add at least one assertion" sonar issue.

Related