SORU
6 Kasım 2009, Cuma


JUnit 4 şartlı görmezden testleri

TAMAM, o @Ignore açıklama test çalışması çalıştırma olmaması gereken işaretleme için iyidir.

Ancak, bazen bir test zamanı bilgilere dayanarak görmezden gelmek istiyorum. Örnek olarak, eğer bir çekirdek, belirli bir sayı ile bir makine üzerinde çalıştırmak için gereken bir eşzamanlılık test varsa olabilir. Eğer bu test edildi bir tek işlemcili makine, sanmıyorum olacağını gidermek için testi yaptırmak (beri olmadı Çalıştır), ve kesinlikle olmazdı değil mi başarısız test ve mola oluşturun.

Bu doğru sonucu test çerçeve oluşturmak testleri değildi ama kayda geçmesi için izin verir, çünkü () gibi görünüyor, zamanında testleri görmezden gelmek mümkün olmak istiyorum. Bu açıklama bana bu esneklik vermeyecektir oldukça eminim, ve el ile söz konusu sınıf için test paketi oluşturmak için ihtiyacım var o şüpheli. Ancak, belgelere değil söz bir şey hakkında bu ve yoluyla API o da belli değil bu nasıl olacak yapılan Program aracılığıyla (yani nasıl programlama yoluyla bir örneğini oluşturur Test veya benzer eşdeğerdir oluşturulan tarafından @Ignore ek açıklama mı?).

Kimseye bir şey geçmişte benzer yaptı, ya da bu konuda gitmek nasıl parlak bir fikir varsa, bunu duymak mutluluk duyarım.

CEVAP
6 Kasım 2009, Cuma


JUnit-zamanında org.junit.Assume bunu yapmak için.

 @Before
 public void beforeMethod() {
     org.junit.Assume.assumeTrue(someCondition());
     // rest of setup.
 }

@After bir yöntem veya test kendisi @Before bir yöntem, ama bunu yapabilirsiniz. Eğer sınavda yaparsan, @Before yöntem çalıştırın.

Varsayım hatası testi göz ardı neden olur.

Düzenleme:@RunIf ek açıklama ile karşılaştırmak içinjunit-extörnek kod şöyle:

@Test
public void calculateTotalSalary() {
    assumeThat(Database.connect(), is(notNull()));
    //test code below.
}

Çok daha kolay yakalama ve Database.connect() yöntemi bu şekilde bağlantı kullanmak için en iyi olduğunu söylemiyorum bile.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AmazonWireless

    AmazonWirele

    8 EYLÜL 2010
  • GavinMichaelBooth

    GavinMichael

    26 AĞUSTOS 2006
  • Max Lee

    Max Lee

    18 AĞUSTOS 2006