2013-10-23 19 views
5

私はJava & JUnitに新規で、別のものを見つけました備品。私はネット上で多くを検索したが、私は答えを得ることができなかった。JUnitでテストケースごとに異なる@Before @Afterを使用することはできますか?

JUnitの異なるテストケースに異なる@Before @Afterを使用できますか?例えばのために :私は、次のTCは、test1の

import static org.junit.Assert.assertEquals; 

import org.junit.After; 
import org.junit.AfterClass; 
import org.junit.Before; 
import org.junit.BeforeClass; 
import org.junit.Ignore; 
import org.junit.Test; 

public class testJUnit { 

@BeforeClass 
public static void setUpBeforeClass() throws Exception { 
    System.out.println("Before Class"); 
} 

@AfterClass 
public static void tearDownAfterClass() throws Exception { 
    System.out.println("Tear Down After Class"); 
} 

@Before 
public void setUp() throws Exception { 
    System.out.println("Setup"); 
} 

@After 
public void tearDown() throws Exception { 
    System.out.println("Tear Down"); 
} 

@Test 
public void test() { 
    int a = 1; 
    assertEquals("Testing...", 1, a); 
} 

@Ignore 
@Test 
public void test1() { 
    int a = 156; 
    assertEquals("Testing...", 156, a); 
} 

} 

ためのテスト&異なる@Beforeため@Before異なるが、誰も私を導くことができる使用することが可能とされてきましたか?

+3

同じ初期化/コンテキストを共有していないと、テストが同じクラスになっていないことがあります。 – LaurentG

+0

@LaurentG OK。ありがとう!ところで、JUnitのために 'main'がどこに呼び出されているのか分かりません。それはjunitパッケージの下で行われますか? – Amrit

+0

JUnitテストには 'main'がありません。これらは、開発環境から直接呼び出されます。クラスやパッケージを右クリックし、「テストを実行する」を選択するか、メニューのどこかで呼び出されます。特定のIDEに依存します。あなたが提供したコードは十分であり、それ以上のメソッドは必要ありません。あなたは何を使いますか:Eclipse、NetBeans、...? –

答えて

6

違うBeforeAfterをしたい場合は、その適切なパブリック・クラス内の各テストを置く

メソッドはクラスで すべてのテストを実行する前に実行されます。

+1

ありがとう!理解しました:) – Amrit

+1

スーパークラスのAfter/Beforeメソッドも使用できます。 After/Beforeにつきより多くのクラスが必要な場合は、抽象スーパークラスに入れてください。名前の前に実行されるスーパーは、あなたのサブクラスの注釈付きメソッドの後にスーパーを実行します。 –

3

テストで呼び出したプライベートメソッドを書きます。 @Beforeでマークされ

関連する問題