簡體   English   中英

檢查JUnit測試用例中是否超時

[英]Checking for a time-out in a JUnit test case

我有一個JUnit測試用例,我希望特定的方法調用花費很長時間(超過一分鍾)。 我想要

  1. 進行方法調用。
  2. 確保方法調用至少需要一分鍾,如果沒有,則JUnit斷言失敗。
  3. 然后殺死方法調用(假設它需要超過一分鍾),因為它可能需要很長時間。

我該怎么做呢?

你可以編寫一個實現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);

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM