2013-10-23 12 views
5

Jestem nowy w Java & JUnit i natknąłem się na różne urządzenia. Szukałem dużo w sieci, ale nie mogłem uzyskać odpowiedzi.Czy jest możliwe użycie różnych @Before @After dla każdego przypadku testowego w JUnit?

Czy jest możliwe użycie innego @Before @After dla różnych przypadków testowych w JUnit? Dla np: Mam następujący TC wtedy jest możliwe aby użyć inny @Before dla testu & innym @Before dla 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); 
} 

} 

Czy ktoś mnie prowadził?

+3

Być może twoje testy nie powinny należeć do tej samej klasy, jeśli nie mają tej samej inicjacji/kontekstu ... – LaurentG

+0

@Allda OK. Dzięki! BTW, czy wiesz, gdzie 'główny' jest wywoływany dla JUnit, ponieważ nie mogę znaleźć w nim kodu. Czy odbywa się to pod pakietem junit? – Amrit

+0

Testy JUnit nie mają "głównego". Są wywoływane bezpośrednio ze środowiska programistycznego - na przykład kliknięcie prawym przyciskiem myszy klasy lub pakietu i wybranie "uruchomienia testów" lub gdzieś w menu; zależy od konkretnego IDE. Podany kod jest wystarczający, nie potrzebuje więcej metod. Czego używasz: Eclipse, NetBeans, ...? –

Odpowiedz

6

Jeśli chcesz inny Before i After, umieścić każdy test w jego właściwej klasy publicznej

metoda, która jest oznaczona @Before zostanie wykonany przed wykonaniem każdego testu w klasie.

+1

Dzięki! understand :) – Amrit

+1

Możesz także użyć metod After/Before z superklasy. Więc jeśli chcesz więcej zajęć na After/Before, po prostu umieść je w super abstrakcyjnej klasie. Jak sama nazwa mówi, super Przed będzie działać wcześniej, super After po adnotowanych metodach twojej podklasy. –

3

Wystarczy napisać prywatną metodę, którą wywołujesz w teście.

Powiązane problemy