如何测试一个方法(使用JUnit)的完成时间应该超过X秒?

如何测试一个方法(使用JUnit)的完成时间应该超过X秒?,junit,infinite-loop,Junit,Infinite Loop,基本上,我需要与@Test(timeout=X)注释相反的行为 我想解决的问题是以某种方式检测方法是否永远不会结束(作为一种正确的行为)。我假设如果该方法在X秒后没有停止,我确信“它永远不会结束” 谢谢 您可以尝试以下方法: @Test public void methodDoesNotReturnFor5Seconds() throws Exception { Thread t = new Thread(new Runnable() { public void run() {

基本上,我需要与
@Test(timeout=X)
注释相反的行为

我想解决的问题是以某种方式检测方法是否永远不会结束(作为一种正确的行为)。我假设如果该方法在X秒后没有停止,我确信“它永远不会结束”

谢谢

您可以尝试以下方法:

@Test
public void methodDoesNotReturnFor5Seconds() throws Exception {
  Thread t = new Thread(new Runnable() {
    public void run() {
      methodUnderTest();
    }
  });
  t.start();
  t.join(5000);
  assertTrue(t.isAlive());
  // possibly do something to shut down methodUnderTest
}