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

时间:2010-10-27 20:26:26

标签: java junit

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

  1. 进行方法调用。
  2. 确保方法调用至少需要一分钟,如果没有,则JUnit断言失败。
  3. 然后杀死方法调用(假设它花了不到一分钟),因为它可能需要很长时间。
  4. 我该怎么做?

1 个答案:

答案 0 :(得分: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 = ...;
   }
}

然后在您的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);

}