JUnit 4 Test Paketleri


99

JUnit 4 ile nasıl test paketleri oluşturabilirim?

Gördüğüm tüm belgeler benim için çalışmıyor gibi görünüyor. Ve Eclipse sihirbazını kullanırsam, bana oluşturduğum test sınıflarından herhangi birini seçme seçeneği sunmuyor.


4
Eclipse 3.7 Indigo ile test paketi sihirbazı artık JUnit 4'ü destekliyor
Fabian Steeg

Yanıtlar:


147
import org.junit.runners.Suite;
import org.junit.runner.RunWith;

@RunWith(Suite.class)
@Suite.SuiteClasses({TestClass1.class, TestClass2.class})
public class TestSuite {
  //nothing
}

61

Böyle bir süit oluşturabilirsiniz. Örneğin bir AllTestsüit böyle bir şeye benzeyebilir.

package my.package.tests;

@RunWith(Suite.class)
@SuiteClasses({
    testMyService.class,
    testMyBackend.class,
    ...
})

public class AllTests {}

Şimdi bunu birkaç farklı şekilde çalıştırabilirsiniz:

  1. sağ tıklayın ve Eclipse'de Junit testi olarak çalıştırın
  2. çalıştırılabilir bir Java Uygulaması oluşturun; Ana sınıf = 'org.junit.runner.JUnitCore' ve Args = 'my.package.tests.AllTests'
  3. komut satırından çalıştırın:

    $ java -cp build/classes/:/usr/share/java/junit4.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore my.package.tests.AllTests

CMDLine için daha fazla VoteUps ekler :)
Gruber

9

TestSuite'in gözden düştüğünü düşünüyorum. 4.x'ten önceki stil bu olabilirdi, ama şimdi bildiğim kadarıyla değil.

Sadece istediğim testlere not yazıyorum ve sonra sınıfı çalıştırıyorum. Açıklamalı tüm testler çalıştırılır. Ant kullanabilirim, ancak çoğu zaman IntelliJ'i benim için çalıştırıyorum.


11
Yanılıyor olabilirim, ancak özellikle daha karmaşık senaryolardan önce daha küçük senaryoların test edilmesi gereken otomatik entegrasyon testlerinde testlerin sırasını belirlememiz gerektiğinde TestSuite'in hala iyi olduğunu düşünüyorum.
bertie

@duffymo Şu ana kadar 4.x öncesi test
senaryolarını

6
Daha fazla sayıda testiniz, farklı fonksiyonel alanlarınız / modülleriniz varsa, 'temel' ve yardımcı / daha yavaş / pahalı çekirdek olmayan testler arasında bir ayrım varsa - bu nedenlerden herhangi biri için - testleri bir TestSuite olarak yapılandırırsınız.
Thomas W

1
Sen kullanabilirsiniz @SuiteClassbirden fazla sınıfta ek açıklama ve Suites içinde yuva Suites can. Bunları 3.x'te organize etme düşüncesi hala tamamen geçerlidir (ve kullanılması gerekir). Her şeyi daha önce yaptığınız gibi yapılandırabilirsiniz; bunun yerine ek açıklama sözdizimini kullanırsınız TestSuite.suite(). TestSuiteEk açıklamayı kullanmanın gerçekten bir faydası yoktur ve organizasyonel olarak eşdeğer notu kullanırsanız tüm JUnit 4 geliştirmelerinden yararlanabilirsiniz.
Thunderforge

3

Tutulmada bir JUnit paketi oluşturmanın adımları şunlardır:

  1. Tutulma 'Java' perspektifinin 'Paket Gezgini' görünümünde, eclipse java projesinin içindeki paketlerinde birim testlerinizi seçin.
  2. Seçilen testlerden herhangi birine sağ tıklayın.
  3. Açılır menüde Yeni, Diğer… öğesini seçin.
  4. 'Java' klasörünü açın, ardından 'JUnit' klasörünü açın
  5. 'JUnit Test Suite'i seçin ve ardından' İleri 'düğmesini seçin
  6. 'Bitir' düğmesini seçin
  7. Sonuç: 'AllTests.java' paket dosyası oluşturuldu, testler otomatik olarak dahil edildi
  8. Tutulmada Çalıştır düğmesini seçin
  9. Sonuç: paket çalıştırmadaki tüm testler
  10. Artık bu paket dosyasına ANT, Jenkins veya diğer yapı yapılandırması sürekli entegrasyon araçlarıyla işaret edebilirsiniz.

Sürüm bilgisi: bu, Neon ve JUnit 4 tutulması içindir. 6. adımda 'Bitir'i seçmeden önce JUnit 3'ü de seçebilirsiniz.


Bu test paketinin ANT'den nasıl çalıştırılacağını gösteren bir build.xml dosyası gönderebilir misiniz?
LiborStefek

1

Başımın tepesinde bir TestSuite oluşturun ve addTests'i çağırın. Bir kaynağın, hazırda bekletme gibi herhangi bir açık kaynak kütüphanesini veya apache'den bir şeyi denemesini ve Testler paketi için kaynağın test dizinine bakmasını istiyorsanız ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.