SORU
20 Mayıs 2011, Cuma


Ne sipariş Junit aradıktan Sonra@/Önce@?

Entegrasyon Test Paketi var. Tüm testleri uzatmak için IntegrationTestBase Dersim var. Bu temel sınıf API ve DB bağlantıları kurmak @Before (public void setUp()) ve @After (public void tearDown()) bir yöntemi vardır. Ne yaptığım sadece her deneme durumu bu iki yöntem geçersiz kılma ve super.setUp() super.tearDown() arıyor. Ancak bu eğer birisi süper arar sorunlara yol açabilir ya da onları yanlış yerde ve bir istisna atılır ve sonunda süper aramak için unutmak falan koyar.

Yapmak istediğim şey temel sınıf final setUp tearDown yöntemleri ve sadece @Before @After kendi açıklamalı yöntemlerimiz ekleyin. Her zaman bu sırada Ara görünüyor yaptığım ilk testlere:

Base @Before
Test @Before
Test
Test @After
Base @After

ama sadece sırasını garanti değil ve bu sorunlara neden olabilir biraz endişeliyim. Etrafıma baktım ve bu konuda bir şey görmedim. Eğer bunu başarırsam biliyor mu ve herhangi bir sorun yok değil mi?

Kod:

public class IntegrationTestBase {

    @Before
    public final void setUp() { *always called 1st?* }

    @After
    public final void tearDown() { *always called last?* }
}


public class MyTest extends IntegrationTestBase {

    @Before
    public final void before() { *always called 2nd?* }

    @Test
    public void test() { *always called 3rd?* }

    @After
    public final void after() { *always called 4th?* }
}

CEVAP
20 Mayıs 2011, Cuma


Evet, bu davranış garanti:

@Before:

@Önce superclasses yöntemleri mevcut sınıf ... önce bir çalışma olacak. Başka sipariş tanımlanır.

@After:

@Yöntemleri üst sınıflardaki ilan etmesinden Sonra, geçerli sınıfın bu sonra çalışır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • kalabrandmusic

    kalabrandmus

    25 Kasım 2009
  • SomeOne Pro

    SomeOne Pro

    25 EKİM 2013
  • TheJoeycool2010

    TheJoeycool2

    12 Temmuz 2010