5

我有一些 Java 代码,我正在使用 JUnit 进行单元测试,在 Eclipse (Neon) 中运行。碰巧某些被测代码中存在错误,导致它进入无限循环。然后,JUnit 运行当然不会完成。如何终止测试运行?

停止测试运​​行的按钮(“停止 JUnit 测试运行”)不能正常工作:GUI 似乎认为它已经停止了测试运行,但查看 CPU 活动(top例如,使用 )表明, Java 线程仍在运行。我可以通过发送终止信号来自己终止线程。但这似乎是一个杂项,而且很不方便。Eclipse 本身有没有更好的方法?

4

3 回答 3

7

使用红色按钮从控制台视图中杀死它。这将停止该过程。

在此处输入图像描述

从 junit 视图中停止它只会要求它停止。

于 2013-08-05T12:30:52.217 回答
5

@Test您可以通过在注释中指定超时来使用 JUnit 处理此类事情。例如:

// Simple test-case which will always fail with time-out
@Test(timeout = 1000 * 60) throws Exception // 60 seconds 
public void testSomething() {
    for (int i = 0; i < 100; i++) {  // 100 seconds
        Thread.sleep(1000);
    }
}

如果您的测试方法没有按时完成,那么 JUnit 将中断它并报告测试失败。对于上面的示例,它将是:

java.lang.Exception: test timed out after 60000 milliseconds
    at java.lang.Thread.sleep(Native Method)
    at my.package.Test1.testSomething(Test1.java:12)
于 2017-06-27T11:01:20.530 回答
0

首先,试试 Matthew Farwell 的回答。如果这不起作用,那么您必须转到正在运行的进程(Windows 上的 ctrl+shift+esc,然后是进程选项卡)并选择java.exe任务,然后结束进程。如果你需要杀死 Eclipse,它是javaw.exe

于 2013-08-05T14:07:41.293 回答