Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I skip a JUnit test while the test is running?

Suppose I want to manually run from my IDE (Intellij IDEA, or eclipse) 4000 JUnit tests; the first 1000 tests run pretty smoothly (say they take 3 minutes all 1000) but the test 1001 takes alone over 30 minutes. Is there a way I can skip the test 1001 (while it's still running) and to let the test 1002 (and the others) keep going. I do not want to @Ignore the test 1001 and rerun the suite because I already have the answer for tests 1-1000; also I do not want to select tests 1001-4000 because it takes too much time.

I would some kind of button - Skip Current Test - which can be pressed when the test is running.

In case such feature does not exist, an enhancement for it needs to be done by the IDE developers or by JUnit developers?

like image 894
Random42 Avatar asked May 02 '12 08:05

Random42


People also ask

How do you skip a JUnit test?

The JUnit 4 @Ignore annotation could be applied for a test method, to skip its execution. In this case, you need to use @Ignore with the @Test annotation for a test method you wish to skip. The annotation could also be applied to the test class, to skip all the test cases under a class.

How do you ignore unit tests?

When using the default testing framework in . NET your tests will be decorated with a testmethod attribute and you can just place the ignore attribute above them. When you have the ignore attribute above a testmethod the test will be skipped. Now when you run your tests you will see that this test has been skipped.

How do you skip a test case in Java?

In TestNG, @Test(enabled=false) annotation is used to skip a test case if it is not ready to test. We don't need to import any additional statements. And We can Skip a test by using TestNG Skip Exception if we want to Skip a particular Test.

How do you ignore a test class in JUnit 4?

We can add it at the class level to disable all tests in a class: @Ignore("Class not ready for tests") public class IgnoreClassUnitTest { @Test public void whenDoTest_thenAssert() { // ... } }


1 Answers

This is actually pretty simple with JUnit 4 using Assume. Assume is a helper class like Assert. The difference is that Assert will make the test fail while Assume will skip it.

The common use case is Assume.assumeTrue( isWindows() ) for tests that only work on, say, a Windows file system.

So what you can do is define a system property skipSlowTests and add

Assume.assumeTrue( Boolean.getBoolean("skipSlowTests") )

at the beginning of slow tests that you usually want to skip. Create an Eclipse launch configuration which defines the property to true and you have a convenient way to switch between the two.

If you want to run a slow test, select the method in Eclipse (or the whole class) and use "Run as JUnit Test" from the context menu. Since the property is false by default, the tests will be run.

like image 132
Aaron Digulla Avatar answered Oct 05 '22 01:10

Aaron Digulla