Cleanup After All Junit Tests
Answer :
I'm using JUnit 4.9. Will this help?:
import junit.framework.TestCase; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.runner.RunWith; import org.junit.runners.Suite; import org.junit.runners.Suite.SuiteClasses; @RunWith(Suite.class) @SuiteClasses({First.class,Second.class,Third.class}) public class RunTestSuite extends TestCase { @BeforeClass public static void doYourOneTimeSetup() { ... } @AfterClass public static void doYourOneTimeTeardown() { ... } }
Edit: I am quite positive (unless I misunderstand your question) that my solution is what you are looking for. i.e. one teardown method after all your tests have ran. No listener required, JUnit has this facility. Thanks.
I recommend to use org.junit.runner.notification.RunListener, example:
public class TestListener extends RunListener { @Override public void testRunStarted(Description description) throws Exception { // Called before any tests have been run. } @Override public void testRunFinished(Result result) throws Exception { // Called when all tests have finished } }
Read more directly in JUnit java doc. You can use that even with Maven's surefire (unit tests) plugin or failsafe plugin (integration tests) by adding following code into plugin configuration:
<properties> <property> <name>listener</name> <value>com.innovatrics.afismq.it.TestListener</value> </property> </properties>
Just encountered the same problem.
My solution:
- For a global set up: use (lazy) singleton to access something global that requires instantiation before the tests. The first test that accesses this singleton will trigger the global set up process.
- For a global tear down: use a Java shutdown hook:
Runtime.getRuntime().addShutdownHook(new Thread(() -> do_your_global_cleanup())));
Comments
Post a Comment