JUnit - stop it from exiting on finish?

99封情书 提交于 2019-12-01 21:10:55

Due to the fact you require a GUI and user interaction during the execution of the test, this is a "functional" test rather than a "unit" test.

You could write the results to a file at the end, this would have the added benefit that you could assert that the output is correct/present programatically at the end. If you really want to keep the test running, then you could insert an infinite loop at the end of your test:

JUnit 3:

public void tearDown() {
    while (true) { Thread.sleep(2000); };
}

JUnit 4:

@After
public void tearDown() {
    while (true) { Thread.sleep(2000); };
}

This will keep the JUnit thread running, but you will need to ensure that your GUI events are being handled in another thread.

In Eclipse: Run configurations... > Test > Keep JUnit running...

One possibility is that your JUnit test is executing a tearDown() method, perhaps in a base class, which shuts down the GUI. If so, you can override the tearDown() method in your JUnit test to prevent this behaviour. E.g.

protected void tearDown()
{
   //do nothing
}

How about using a countdownlatch which you count down.

private static CountDownLatch countdown = new CountDownLatch(1);

@AfterClass
public static void tearDownClass() throws Exception {
    countdown.await();
}

Then somewhere else in your code you count down latch on event.

countdown.countDown();

When countdown.countDown() is called then countdown.await() will continue.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!