快速 JUnit 问题。我正在运行一些涉及启动 GUI 和做大量工作的单元测试。
我想在测试后查看结果以直观地确认它。但是,它会按原样到达代码的末尾并退出。如果我想覆盖它,我会在测试的最后一行放置一个断点。不过这很尴尬。
是否有一些选项可以阻止它退出?
由于在执行测试期间您需要 GUI 和用户交互,因此这是“功能”测试而不是“单元”测试。
您可以在最后将结果写入文件,这将具有额外的好处,您可以在最后以编程方式断言输出是正确的/存在的。如果您真的想保持测试运行,那么您可以在测试结束时插入一个无限循环:
JUnit 3:
public void tearDown() {
while (true) { Thread.sleep(2000); };
}
JUnit 4:
@After
public void tearDown() {
while (true) { Thread.sleep(2000); };
}
这将使 JUnit 线程保持运行,但您需要确保您的 GUI 事件正在另一个线程中处理。
在 Eclipse 中:运行配置... > 测试 > 保持 JUnit 运行...
一种可能性是您的 JUnit 测试正在执行一个 tearDown() 方法,可能在一个基类中,它关闭了 GUI。如果是这样,您可以覆盖 JUnit 测试中的 tearDown() 方法以防止这种行为。例如
protected void tearDown()
{
//do nothing
}
如何使用倒计时的倒计时锁。
私有静态 CountDownLatch 倒计时 = 新的 CountDownLatch(1);
@AfterClass
public static void tearDownClass() throws Exception {
countdown.await();
}
然后在你的代码中的其他地方你倒计时事件的闩锁。
countdown.countDown();
当countdown.countDown()
被调用时countdown.await()
将继续。