2013-10-23 8 views
5

Ich bin neu zu Java & JUnit und stieß auf verschiedene Fixtures. Ich habe viel im Netz gesucht, aber ich konnte die Antwort nicht bekommen.Ist es möglich, verschiedene @Before @After für jeden Testfall in JUnit zu verwenden?

Ist es möglich, verschiedene @Before @After für verschiedene Testfälle in JUnit zu verwenden? Für zB: Ich habe folgendes TC ist es dann möglich, test1 verschiedene @Before für Test & verschiedenen @Before zu verwenden

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); 
} 

} 

Kann mir jemand anleitet?

+3

Vielleicht sollten Ihre Tests nicht in der gleichen Klasse sein, wenn sie nicht die gleiche Initialisierung/Kontext teilen ... – LaurentG

+0

@LaurentG OK. Vielen Dank! BTW, wissen Sie, wo 'Haupt' für JUnit aufgerufen wird, da ich darin Code nicht finden kann. Ist es unter dem Junit-Paket getan? – Amrit

+0

JUnit-Tests haben kein 'main'. Sie werden direkt aus der Entwicklungsumgebung aufgerufen - so als würden Sie mit der rechten Maustaste auf eine Klasse oder ein Paket klicken und "Tests ausführen" oder irgendwo im Menü auswählen. hängt von der spezifischen IDE ab. Der von Ihnen bereitgestellte Code ist ausreichend, es sind keine weiteren Methoden erforderlich. Was benutzt du: Eclipse, NetBeans, ...? –

Antwort

6

Wenn Sie verschiedene Before wollen und After, setzt jeden Test in der richtigen öffentlichen Klasse

Methode, die mit @Before markiert werden, bevor jeden Test in der Klasse der Ausführung ausgeführt werden.

+1

Danke! verstanden :) – Amrit

+1

Sie können After/Before-Methoden auch von einer Oberklasse verwenden. Wenn Sie also mehr Klassen pro After/Before möchten, fügen Sie sie einfach in eine (abstrakte) Superklasse ein. Wie der Name sagt, wird der Super-Vorher-Befehl vor dem Super-After-Befehl nach den annotierten Methoden Ihrer Unterklasse ausgeführt. –

3

Schreiben Sie einfach eine private Methode, die Sie im Test aufrufen.

Verwandte Themen