Stop JUnit test in @Before method without failing
java, junit
Solution
I asked a similar question previously - the result was that you can use the `Assume` class' methods to disable a test based on a run-time check (whereas `@Ignore` is a static condition).
That said, if you're always disabling them based on a specific annotation, it would seem that you don't actually need to do this at run-time. Simply annotating the classes with `@Ignore` as well as `@Version20` would do the job, and would be arguably clearer.
Though I suspect you might be ignoring only if the test is running in "1.0 mode" - in which case it is a runtime introspection, and you could do this with something like:
@Before
public void setUp() {
if (!this.getClass().isAnnotatedWith("Version20")) {
final String version = System.getProperty("my.app.test.version");
org.junit.Assume.assumeTrue(version.equals("2.0"));
}
}
Problem
These are my testcases ``` class Mother { @Before public void setUp() { if (!this.getClass().isAnnotatedWith("Version20")) { // pseudo code /* * stop this test without failing! */ } // further setup } } @Version20 class Child extends Mother { @Test public void test() { // run only when Version == 20 } } ``` Is it possible to stop the test in Child in the @Before method of Mother without failing or assertTrue(false)? edit: I have more Versions @Version19, @Version18 etc. my software is reading a configfile and outputting the result some tests are only applicable for special Versions. I don't want to make the version check within the test method because i have a lot of small tests and don't like code duplication