检查JUnit测试用例中是否超时

Pau*_*ers 4 java junit

我有一个JUnit测试用例,我希望特定的方法调用花费很长时间(超过一分钟).我想要

  1. 进行方法调用.
  2. 确保方法调用至少需要一分钟,如果没有,则JUnit断言失败.
  3. 然后杀死方法调用(假设它需要超过一分钟),因为它可能需要很长时间.

我该怎么做呢?

Alv*_*vin 9

你可以写一个实现runnable的类,它包含了感兴趣的方法; 假设允许生成线程.

public class CallMethod implements Runnable
{
   //time in milli
   public long getStartTime()
   {
     return startTime;
   }

   //time in milli
   public long getEndTime()
   {
     return endTime;
   }

   public void run()
   {
       startTime = ...;
       obj.longRunningMethod();
       endTime = ...;
   }
}
Run Code Online (Sandbox Code Playgroud)

然后在您的JUnit中,您可以执行以下操作:

public void testCase1()
{
  CallMethod call = new CallMethod();
  Thread t = new Thread(call);
  t.start();
  t.join(60000); // wait one minute

  assertTrue(t.alive() || call.getEndTime() - call.getStartTime() >= 60000);

}
Run Code Online (Sandbox Code Playgroud)