JUnit - 阻止它退出完成?

时间:2010-03-29 20:09:53

标签: java junit exit

快速JUnit问题。我正在运行一些单元测试,包括启动GUI并执行一些操作。

我希望在测试后看到结果,以便在视觉上确认。但是,它会到达代码的末尾并退出,因为它应该如此。如果我想覆盖它,我在测试的最后一行放置一个断点。这很尴尬。

是否有一些选项可以阻止它退出?

4 个答案:

答案 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()将继续。