SORU
14 NİSAN 2010, ÇARŞAMBA


JUnit karışıklık: 'uzatmak deneme durumu' veya '@Test'?

Doğru kullanımı (ya da en azından belgeleri) JUnit çok kafa karıştırıcı buldum. Bu soru gerçek bir soru gibi gelecek bir referans olarak hem de hizmet vermektedir.

Eğer doğru anladım ise, ve JUnit test oluşturmak ve çalıştırmak için iki ana yaklaşım vardır:

Yaklaşım (JUnit 3-stili):deneme durumu genişleten bir sınıf oluşturun ve kelime test yöntemleri başlamak test. JUnit Testi (Eclipse) sınıfı çalışırken, tüm yöntemleri kelime test ile başlayan otomatik olarak çalışır.

import junit.framework.TestCase;
public class DummyTestA extends TestCase {

    public void testSum() {
        int a = 5;
        int b = 10;
        int result = a   b;
        assertEquals(15, result);
    }
}

B (4 tarzı JUnit) yaklaşım:'normal' bir sınıf ve yöntemi @Test bir açıklama önüne oluşturabilirsiniz. Kelime test yöntem başlamak zorunda olduğunu unutmayın.

import org.junit.*;
import static org.junit.Assert.*;

public class DummyTestB {

    @Test
    public void Sum() {
        int a = 5;
        int b = 10;
        int result = a   b;
        assertEquals(15, result);
    }
}

İki iyi bir fikir, örneğin this stackoverflow question bakın hiç de öyle olmadığını gördüm karıştırma:

Şimdi, benim soru(s):

  1. Tercih edilen yaklaşımya da ne zaman başka bir yerine kullanmak istiyorsunuz?
  2. Yaklaşım B @Test(expected = ArithmeticException.class) @Test açıklama gibi uzatarak özel durumlar için test etmek için izin verir.Ama nasıl Bir yaklaşım kullanarak, özel durumlar için test musunuz?
  3. Kullanarak Bir yaklaşım, böyle bir test paketi test sınıf grubu:

    TestSuite suite = new TestSuite("All tests");suite.addTestSuite(DummyTestA.class);suite.addTestSuite(DummyTestAbis.class);Yaklaşım için testler B grubu için doğru yol nedir?

Edit: her iki yaklaşım için JUnit sürümlerini ekledim

CEVAP
14 NİSAN 2010, ÇARŞAMBA


Ayrım oldukça basittir:

  • TestCase genişletiyor birim testleri JUnit 3 yazılı (tabii hala JUnit 4 desteklenen)
  • @Test annotation kullanarak yolu JUnit 4 tarafından kullanılmaya başlandı

Genellikle JUnit 3 (ve/veya Java sürümü Java 5'ten) ile uyumluluk çeşitli nedenlerden dolayı gerekli olmadığı sürece açıklama yolunu seçin:

  • @Test annotaton daha açık ve araçları (örneğin kolay tüm testler için bu yolu aramak için) destek için daha kolaydır
  • Birden fazla yöntem 16*/@BeforeClass *ve 18*/@AfterClass *daha fazla esneklik ile açıklamalı olabilir
  • Entegre beklenen özel durumlar expected= kullanarak test edilmesi için destek
  • @Ignored ek açıklama desteği

3 TestCase JUnit beklenen özel durumlar için test etmek için metni açık yapmak zorunda kalırdın.

public void testMyException() {
  try {
    objectUnderTest.myMethod(EVIL_ARGUMENT);
    fail("myMethod did not throw an Exception!");
  } catch (MyException e) {
    // ok!
    // check for properties of exception here, if desired
  }
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • kev5124

    kev5124

    9 Kasım 2008
  • Kevin Bruckert

    Kevin Brucke

    30 Aralık 2006
  • The Computer Chronicles

    The Computer

    7 Kasım 2012