// Copyright © 2011-2014, Esko Luontola <www.orfjackal.net> // This software is released under the Apache License 2.0. // The license text is at http://www.apache.org/licenses/LICENSE-2.0 package fi.jumi.test; import org.junit.*; import org.junit.rules.Timeout; import java.io.IOException; public class JUnitCompatibilityTest { @Rule public final AppRunner app = new AppRunner(); @Rule public final Timeout timeout = Timeouts.forEndToEndTest(); @Before public void addJUnitToPath() throws IOException { app.addToClasspath(TestEnvironment.getJUnitJar()); } @Test public void runs_JUnit_3_tests() throws Exception { app.runTestsMatching("glob:sample/JUnit3Test.class"); app.checkPassingAndFailingTests(2, 0); app.checkTotalTestRuns(1); app.checkContainsRun("JUnit3Test", "testSomething", "/", "/"); } @Test public void runs_JUnit_4_tests() throws Exception { app.runTestsMatching("glob:sample/JUnit4Test.class"); app.checkPassingAndFailingTests(2, 0); app.checkTotalTestRuns(1); app.checkContainsRun("JUnit4Test", "something", "/", "/"); } @Test public void runs_RunWith_annotated_JUnit_4_tests() throws Exception { // We are using org.junit.runners.Suite to test deep test hierarchies at the same time app.runTestsMatching("glob:sample/JUnit4AnnotatedTest.class"); app.checkPassingAndFailingTests(5, 0); app.checkTotalTestRuns(2); app.checkContainsRun("JUnit4AnnotatedTest", "JUnit4Test", "something", "/", "/", "/"); app.checkContainsRun("JUnit4AnnotatedTest", "JUnit3Test", "testSomething", "/", "/", "/"); } @Test public void reports_test_failures() throws Exception { app.runTestsMatching("glob:sample/JUnitFailingTest.class"); app.checkPassingAndFailingTests(1, 1); app.checkTotalTestRuns(1); app.checkContainsRun("JUnitFailingTest", "failing", "/", "/"); app.checkHasStackTrace( "java.lang.AssertionError: dummy failure", "at sample.JUnitFailingTest.failing"); } @Test public void ignored_tests_are_not_run() throws Exception { // TODO: implement support for ignored tests app.runTestsMatching("glob:sample/JUnitIgnoredTest.class"); app.checkEmptyPassingSuite(); } @Test public void failing_assumptions_do_not_make_the_test_fail_but_report_the_stack_trace() throws Exception { // TODO: implement support for ignored tests app.runTestsMatching("glob:sample/JUnitAssumptionsTest.class"); app.checkPassingAndFailingTests(2, 0); app.checkTotalTestRuns(1); app.checkSuitePasses(); app.checkContainsRun("JUnitAssumptionsTest", "failingAssumption", "/", "/"); app.checkHasStackTrace( "org.junit.internal.AssumptionViolatedException: got: <false>, expected: is <true>", "at sample.JUnitAssumptionsTest.failingAssumption"); } }