2011-07-26 30 views
10

Czy istnieje sposób na zdefiniowanie odmiennego rozbierania dla każdego @ testu w jUnit?Różne rozbieżności dla każdego @ Test w jUnit

+0

Dlaczego po prostu opisać metodę odrzucania z '@ org.junit.After'? – Constantiner

+0

@Constantiner Ponieważ jest to tylko jedna metoda After dla wszystkich testów. I muszę biegać dla każdego Testu o własne rozstanie. – Daniel

+1

@Daniel, Umieść testy w osobnych testach z dedykowanymi przerwami. – Constantiner

Odpowiedz

30

Użyj adnotacji @After, aby wskazać metodę (-y), które będą uruchamiane po każdym @Test.

pełnego zestawu adnotacji, jak to jest:

  • @BeforeClass - przed wszystkim @Tests prowadzą
  • @Before - przed każdym @Test prowadzony jest
  • @After - po każdym @Test prowadzony jest
  • @AfterClass - po wszystkim @Tests są uruchamiane

Właśnie zdałem sobie sprawę, że mogłem nie zrozumieć tego pytania. Jeśli proszą jak skojarzyć konkretnej metody przerywaniem do konkretnej metody @Test, nie ma potrzeby stosowania adnotacji: po prostu nazwać to pod koniec swojej metody badawczej w finally:

@Test 
public void someTest() { 
    try { 
     // test something 
    } finally { 
     someParticularTearDown(); 
    } 
} 
+1

Dziękuję. Tego potrzebuję. – Daniel

+0

To nie jest optymalne, ponieważ będziesz musiał powtórzyć ten kod dla każdej metody testowej. –

+0

Ten ostatni przykład miał jedynie na celu wyjaśnienie ewentualnej interpretacji pytania - ja osobiście rzadko to robię, ale jest to jednak najprostsza opcja, jaką mogę wymyślić, aby mieć różne metody usuwania różnych testów @Tests. – Bohemian

4

Punktem zgrupowania Metody testowe są wspólne dla tej samej klasy, więc mogą dzielić się rzeczami, w tym mieć tę samą konfigurację i rozbiór. Tak, możesz zdefiniować oddzielne oderwania dla każdego testu, ale robisz to, umieszczając metody @Test w różnych klasach.

Po rozpoczęciu oddzielnych metod odrzucania uzasadnienie, dlaczego chcesz pogrupować testy w tej samej klasie, nie jest oczywiste. Możesz więc poradzić sobie z tą sytuacją, elastycznie biorąc pod uwagę sposób grupowania testów na zajęciach.

+0

Tak, zamiast tego rozważ umieszczenie kodu konfiguracji i odrywania w swojej metodzie '@ Test'. Należy jednak zwrócić uwagę na to, aby kod wywołania był wywoływany, nawet jeśli zostanie zgłoszony wyjątek, używając 'try' ...' finally'. – Raedwald

+1

@Raedwald: tak, podejście Bohemiana jest jednym ze sposobów, aby to zrobić, ale tracisz trochę mocy ramy, ponieważ teraz musisz dodać blok końcowy. –

1

Nie ma prostego sposobu na zrobienie tego w JUnit. Dzięki TestNG możesz umieszczać swoje metody w grupach, dzięki czemu możesz zdefiniować konkretne metody @ BeforeMethod/@ AfterMethod, które działają tylko w określonych grupach.

Powiązane problemy