4

快速 JUnit 问题。我正在运行一些涉及启动 GUI 和做大量工作的单元测试。

我想在测试后查看结果以直观地确认它。但是,它会按原样到达代码的末尾并退出。如果我想覆盖它,我会在测试的最后一行放置一个断点。不过这很尴尬。

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

4

4 回答 4

3

由于在执行测试期间您需要 GUI 和用户交互,因此这是“功能”测试而不是“单元”测试。

您可以在最后将结果写入文件,这将具有额外的好处,您可以在最后以编程方式断言输出是正确的/存在的。如果您真的想保持测试运行,那么您可以在测试结束时插入一个无限循环:

JUnit 3:

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

JUnit 4:

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

这将使 JUnit 线程保持运行,但您需要确保您的 GUI 事件正在另一个线程中处理。

于 2010-03-29T20:22:17.930 回答
1

在 Eclipse 中:运行配置... > 测试 > 保持 JUnit 运行...

于 2010-03-29T20:14:50.787 回答
0

一种可能性是您的 JUnit 测试正在执行一个 tearDown() 方法,可能在一个基类中,它关闭了 GUI。如果是这样,您可以覆盖 JUnit 测试中的 tearDown() 方法以防止这种行为。例如

protected void tearDown()
{
   //do nothing
}
于 2010-03-29T20:16:08.467 回答
0

如何使用倒计时的倒计时锁。

私有静态 CountDownLatch 倒计时 = 新的 CountDownLatch(1);

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

然后在你的代码中的其他地方你倒计时事件的闩锁。

countdown.countDown();

countdown.countDown()被调用时countdown.await()将继续。

于 2010-03-30T16:57:03.970 回答