快速JUnit问题。我正在运行一些单元测试,包括启动GUI并执行一些操作。
我希望在测试后看到结果,以便在视觉上确认。但是,它会到达代码的末尾并退出,因为它应该如此。如果我想覆盖它,我在测试的最后一行放置一个断点。这很尴尬。
是否有一些选项可以阻止它退出?
答案 0 :(得分:2)
由于您在执行测试期间需要GUI和用户交互,因此这是一个“功能”测试,而不是“单元”测试。
您可以在最后将结果写入文件,这将带来额外的好处,您可以在结束时以编程方式声明输出正确/存在。如果你真的想让测试继续运行,那么你可以在测试结束时插入一个无限循环:
JUnit 3:
public void tearDown() {
while (true) { Thread.sleep(2000); };
}
JUnit 4:
@After
public void tearDown() {
while (true) { Thread.sleep(2000); };
}
这将使JUnit线程保持运行,但您需要确保在另一个线程中处理您的GUI事件。
答案 1 :(得分:1)
在Eclipse中:运行配置...>测试>让JUnit保持运行......
答案 2 :(得分:0)
一种可能性是你的JUnit测试正在执行一个tearDown()方法,可能在基类中,它会关闭GUI。如果是这样,您可以覆盖JUnit测试中的tearDown()方法以防止此行为。 E.g。
protected void tearDown()
{
//do nothing
}
答案 3 :(得分:0)
如何使用倒计时的countdownlatch。
private static CountDownLatch countdown = new CountDownLatch(1);
@AfterClass
public static void tearDownClass() throws Exception {
countdown.await();
}
然后你的代码中的其他地方你倒计时事件。
countdown.countDown();
调用countdown.countDown()
后,countdown.await()
将继续。