JUnit 4 Test Suites

99

Bagaimana cara membuat rangkaian pengujian dengan JUnit 4?

Semua dokumentasi yang saya lihat sepertinya tidak berfungsi untuk saya. Dan jika saya menggunakan wizard Eclipse, itu tidak memberi saya opsi untuk memilih kelas tes apa pun yang telah saya buat.

Adam Taylor
sumber
4
Dengan Eclipse 3.7 Indigo, wizard rangkaian pengujian sekarang mendukung JUnit 4
Fabian Steeg

Jawaban:

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

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

Anda dapat membuat suite seperti itu. Misalnya sebuah AllTestsuite akan terlihat seperti ini.

package my.package.tests;

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

public class AllTests {}

Sekarang Anda dapat menjalankannya dengan beberapa cara berbeda:

  1. klik kanan dan jalankan di Eclipse as Junit test
  2. membuat Aplikasi Java yang dapat dijalankan; Kelas utama = 'org.junit.runner.JUnitCore' dan Args = 'my.package.tests.AllTests'
  3. dijalankan dari baris perintah:

    $ java -cp build/classes/:/usr/share/java/junit4.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore my.package.tests.AllTests
cmcginty.dll
sumber
Akan menambah lebih banyak VoteUps untuk CMDLine :)
Gruber
9

Saya pikir TestSuite tidak lagi disukai. Itu mungkin gaya sebelum 4.x, tapi tidak sejauh yang saya tahu.

Saya hanya memberi anotasi pada tes yang saya inginkan dan kemudian menjalankan kelas. Semua tes beranotasi dijalankan. Saya mungkin menggunakan Ant, tetapi sebagian besar waktu saya meminta IntelliJ menjalankannya untuk saya.

duffymo
sumber
11
Saya bisa saja salah, tetapi saya pikir TestSuite masih bagus ketika kita perlu menentukan urutan pengujian, terutama dalam pengujian integrasi otomatis di mana pengujian skenario yang lebih kecil harus dilakukan sebelum skenario yang lebih kompleks.
bertie
@duffymo Saya menemukan komentar Anda menarik karena saya sejauh ini telah dilatih dalam garis pemikiran pra-4.x tentang mengatur testcases ke dalam testsuites
Vatsala
6
Jika Anda memiliki jumlah pengujian yang lebih besar, area / modul fungsional yang berbeda, perbedaan antara pengujian 'inti' dan tambahan / lebih lambat / mahal - karena salah satu alasan ini - Anda akan menyusun pengujian menjadi TestSuite.
Thomas W
1
Anda dapat menggunakan @SuiteClassanotasi di beberapa kelas dan Anda dapat menyusun Suite dalam Suite. Garis pemikiran untuk mengaturnya di 3.x masih benar-benar valid (dan harus digunakan). Anda dapat menyusun semuanya dengan cara yang persis sama seperti yang Anda lakukan sebelumnya; Anda cukup menggunakan sintaks anotasi, bukan TestSuite.suite(). Benar-benar tidak ada manfaatnya menggunakan TestSuitelebih dari anotasi dan Anda dapat memanfaatkan semua penyempurnaan JUnit 4 jika Anda menggunakan anotasi yang setara secara organisasi.
Thunderforge
3

Berikut langkah-langkah untuk membuat suite JUnit di eclipse:

  1. Dalam tampilan 'Package Explorer' dari perspektif 'Java' eclipse, pilih unit test Anda dalam paket mereka, di dalam proyek java eclipse.
  2. Klik kanan pada salah satu tes yang dipilih.
  3. Di menu pop-up, pilih Baru, Lainnya…
  4. Buka folder 'Java', lalu buka folder 'JUnit'
  5. Pilih 'JUnit Test Suite' dan kemudian pilih tombol 'Next'
  6. Pilih tombol 'Selesai'
  7. Hasil: File suite 'AllTests.java' dibuat, dengan pengujian otomatis disertakan
  8. Pilih tombol Run di eclipse
  9. Hasil: semua pengujian dalam rangkaian dijalankan
  10. Sekarang Anda dapat mengarahkan ke file suite ini dengan ANT, Jenkins, atau fitur integrasi berkelanjutan konfigurasi build lainnya.

Info versi: ini untuk eclipse Neon dan JUnit 4. Anda juga dapat memilih JUnit 3 sebelum memilih 'Selesai' di langkah 6.

Ayam Merah
sumber
Bisakah Anda memposting file build.xml yang menunjukkan cara menjalankan rangkaian pengujian ini dari ANT?
LiborStefek
1

Di bagian atas kepala saya, buat TestSuite dan pemanggilan addTests. Jika Anda ingin suatu sumber untuk melihat coba lib opensource apa pun seperti hibernate atau sesuatu dari apache dan lihat di bawah direktori pengujian sumber untuk rangkaian Tes ...

mP.
sumber