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);
}