EeBlog(テクニカルブログ)

第75回 JUnit4 その3

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

前回はテストメソッドの前処理と後処理について学びました。
今回はテストクラスの前処理と後処理について学びます。

テストクラスの前処理を行うメソッドには、@BeforeClassを付加します。
@Beforeを付加したメソッドがテストメソッドごとに実行されるのに対して、
@BeforeClassを付加したメソッドはテストクラスの実行前に一度だけ実行されます。
同様にテストクラスの実行後に一度だけ実行するメソッドには@AfterClassを付加します。
これらはJUnit4の新機能で、過去のJUnitには同等の機能はありません。

@BeforeClassや@AfterClassを付加するメソッドがpublicかつstaticでない場合、
コンパイルエラーにはなりませんが、実行時例外が発生します。

では、実際に@BeforeClassと@AfterClassを使ってテストを実行してみましょう。

public class Sample {


     public Object returnNull() {
         return null;
     }


     public int returnOne() {
         return 1;
     }


     public boolean returnTrue() {
         return true;
     }
 }
import static org.junit.Assert.*;


 import org.junit.After;
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.junit.runner.JUnitCore;


 public class SampleTest {


     private Sample sample = null;


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


     @BeforeClass
     public static void beforeTestClass() {
         System.out.println("テストクラス前処理");
     }


     @AfterClass
     public static void afterTestClass() {
         System.out.println("テストクラス後処理");
     }


     @Before
     public void beforeTestMethod() {
         System.out.println("テストメソッド前処理");
         sample = new Sample();
     }


     @After
     public void afterTestMethod() {
         System.out.println("テストメソッド後処理");
     }


     @Test
     public void returnNull() {
         assertNull("nullが返されなかった", sample.returnNull());
         System.out.println("nullが返された");
     }


     @Test
     public void returnOne() {
         assertEquals("1が返されなかった", 1, sample.returnOne());
         System.out.println("1が返された");
     }


     @Test
     public void returnTrue() {
         assertTrue("trueが返されなかった", sample.returnTrue());
         System.out.println("trueが返された");
     }
 }

SampleTestクラスを実行すると、テスト結果が表示されます。
テストクラス実行の際に一度だけ前処理と後処理が行われているのが確認できますね。