EeBlog(テクニカルブログ)

第77回 JUnit4 その5

引き続き「JUnit4」について学んでいきます。

今回はJUnit4におけるテストのタイムアウト処理について学びます。

JUnit4では、テストメソッドのタイムアウト時間を設定できます。
設定した時間内にテストメソッドが終了しなかったら、テスト失敗となります。
設定方法は例外のテストと同様に、@Testで指定します。
例えば、タイムアウト時間を10ミリ秒に設定する場合、@Test(timeout = 10)とします。

では、実際にタイムアウト処理をテストしてみましょう。
最初のテストはThreadクラスのsleepメソッドによりタイムアウトさせています。

public class Sample {


     public static Object returnNull() throws InterruptedException {
         Thread.sleep(100);
         return null;
     }


     public static void throwRuntimeException() {
         throw new RuntimeException();
     }
 }
import static org.junit.Assert.*;
 import org.junit.Test;
 import org.junit.runner.JUnitCore;


 public class SampleTest {


     public static void main(String[] args) {
         JUnitCore.main(SampleTest.class.getName());
     }


     @Test(timeout = 10)
     public void returnNull() throws InterruptedException {
         assertNull(Sample.returnNull());
     }


     @Test(timeout = 0, expected = RuntimeException.class)
     public void throwRuntimeException() {
         Sample.throwRuntimeException();
     }
 }

java.lang.Exception: test timed out after 10 millisecondsと表示され、タイムアウトによるテスト失敗が確認できますね。