4
我有一个JUnit测试用例,我期待特定的方法调用需要很长时间(超过一分钟)。我想要在JUnit测试用例中检查超时
- 进行方法调用。
- 确保方法调用至少需要一分钟,如果没有JUnit断言失败。
- 然后杀掉方法调用(假设它需要超过一分钟),因为它可能需要很长时间。
我该怎么做?
我有一个JUnit测试用例,我期待特定的方法调用需要很长时间(超过一分钟)。我想要在JUnit测试用例中检查超时
我该怎么做?
您可以编写一个实现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);
}