2011-07-05 43 views
33

私はjUnit 4でTestSuiteを作成する方法を見つけ出しましたが、TestSetupでスイートをラップするというv3の可能性が本当に欠けています。jUnit 4のTestSuite設定

@ BeforeClass/@ AfterClassの設定をjUnit 4の一連のテストケースに対して実行する方法については、何か考えてください。

I.e.

@RunWith(Suite.class) 
@Suite.SuiteClasses({Test1.class, Test2.class}) 
public class MyTestSuite { 
    @BeforeClass public static void setUpClass() { 
     // Common initialization done once for Test1 + Test2 
    } 
    @AfterClass public static void tearDownClass() { 
     // Common cleanup for all tests 
    } 
} 

残念ながら、上記のコードは機能しません。 @BeforeClassは、テストクラスごとにのみ動作します。

+0

です:http://stackoverflow.com/questions/82949/before-and-after-suite-execution-hook-in-junit- 4-x#177069 – Sebi

答えて

50

これは私が持っているもので、うまく動作します。

import org.junit.AfterClass; 
import org.junit.BeforeClass; 
import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 
import org.junit.runners.Suite.SuiteClasses; 

@RunWith(Suite.class) 
@SuiteClasses({ TestSuite1.class, TestSuite2.class }) 
public class CompleteTestSuite { 

    @BeforeClass 
    public static void setUpClass() {  
     System.out.println("Master setup"); 

    } 

    @AfterClass public static void tearDownClass() { 
     System.out.println("Master tearDown"); 
    } 

} 

私のテストスイート1(テストスイート2も同じです)です。

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 
import org.junit.runners.Suite.SuiteClasses; 

@RunWith(value = Suite.class) 
@SuiteClasses(value = { TestCase1.class }) 
public class TestSuite1 {} 

これは私のテストクラスです。 testcase1とtestcase2の両方を作成します。

import static org.junit.Assert.assertEquals; 

import org.junit.BeforeClass; 
import org.junit.Test; 

public class TestCase1 { 

    @BeforeClass 
    public static void setUpClass() {  
     System.out.println("TestCase1 setup"); 
    } 

    @Test 
    public void test1() { 
     assertEquals(2 , 2); 
    } 
}  

あなたは5つのクラス completesuite suite1 suite2 test1の test2の

を持っている必要があり、あなたのビルド・パスにJUnitのを持っていることを確認してください。これは実行する必要があります!ここで

は、それが動作するはずこの回答によると、出力

Master setup 
TestCase1 setup 
Master tearDown 
+0

何が!それは実際に動作します!さて、私はそれが昨日働くようになることができなかったのだろうか(おそらく私の部分ではただの大失敗)。 – Rasmus

+0

素晴らしいソリューション!私のシナリオでさえ、カスタムテストスキャナがテストのリストを作成します。 –

関連する問題