Cara termudah (dengan jumlah paling sedikit kode baru yang diperlukan) untuk melakukan ini adalah dengan menjalankan pengujian sebagai pengujian parametrized (beri anotasi dengan @RunWith(Parameterized.class)
dan tambahkan metode untuk menyediakan 10 parameter kosong). Dengan begitu framework akan menjalankan pengujian 10 kali.
Pengujian ini harus menjadi satu-satunya pengujian di kelas, atau lebih baik letakkan semua metode pengujian yang harus dijalankan 10 kali di kelas.
Berikut ini contohnya:
@RunWith(Parameterized.class)
public class RunTenTimes {
@Parameterized.Parameters
public static Object[][] data() {
return new Object[10][0];
}
public RunTenTimes() {
}
@Test
public void runsTenTimes() {
System.out.println("run");
}
}
Dengan hal di atas, bahkan mungkin untuk melakukannya dengan konstruktor tanpa parameter, tetapi saya tidak yakin apakah penulis kerangka bermaksud itu, atau apakah itu akan rusak di masa mendatang.
Jika Anda menerapkan pelari Anda sendiri, Anda dapat meminta pelari menjalankan pengujian 10 kali. Jika Anda menggunakan runner pihak ketiga, maka dengan 4.7, Anda dapat menggunakan @Rule
anotasi baru dan mengimplementasikan MethodRule
antarmukanya sehingga ia mengambil pernyataan dan mengeksekusinya 10 kali dalam perulangan for. Kerugian saat ini dari pendekatan ini adalah @Before
dan @After
dijalankan hanya sekali. Ini kemungkinan akan berubah di versi JUnit berikutnya (yang @Before
akan berjalan setelah @Rule
), tetapi terlepas dari apa pun Anda akan bertindak pada contoh objek yang sama (sesuatu yang tidak benar dari Parameterized
pelari). Ini mengasumsikan bahwa pelari apa pun yang Anda jalankan dengan kelas mengenali @Rule
anotasi dengan benar . Itu hanya kasus jika itu mendelegasikan ke pelari JUnit.
Jika Anda menjalankan dengan runner kustom yang tidak mengenali @Rule
anotasi, Anda benar-benar harus menulis runner Anda sendiri yang mendelegasikan secara tepat ke Runner tersebut dan menjalankannya 10 kali.
Perhatikan bahwa ada cara lain untuk menyelesaikan masalah ini (seperti pelari Teori) tetapi semuanya membutuhkan pelari. Sayangnya JUnit saat ini tidak mendukung lapisan pelari. Itu adalah pelari yang mengikat pelari lainnya.