Quick JUnit question. I'm running some unit tests that involve starting up the GUI and doing a load of stuff.
I would like to see the results after the test to confirm it visually. However, it gets to the end of the code and exits, as it should. If I want to override this, I pu开发者_如何转开发t a breakpoint on the last line of the test. This is pretty awkward though.
Is there some option to stop it from exiting?
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.
精彩评论