JUnit5 @RunWith

1. Pengenalan

Dalam artikel ringkas ini, kita akan membahas penggunaan anotasi @RunWith dalam rangka kerja JUnit 5.

Dalam JUnit 5, yang @RunWith anotasi telah digantikan dengan yang lebih berkuasa @ExtendWith anotasi .

Walau bagaimanapun, anotasi @RunWith masih boleh digunakan di JUnit5 demi keserasian kebelakang.

2. Menjalankan Ujian Dengan Pelari Berasaskan JUnit4

Kami boleh menjalankan ujian JUnit5 dengan persekitaran JUnit lama yang lain menggunakan anotasi @RunWith .

Mari lihat contoh menjalankan ujian ini dalam versi Eclipse yang hanya menyokong JUnit4.

Pertama, mari buat kelas yang akan kita uji:

public class Greetings { public static String sayHello() { return "Hello"; } }

Seterusnya, mari buat ujian JUnit5 biasa ini:

public class GreetingsTest { @Test void whenCallingSayHello_thenReturnHello() { assertTrue("Hello".equals(Greetings.sayHello())); } }

Akhirnya, mari tambahkan anotasi ini untuk dapat menjalankan ujian:

@RunWith(JUnitPlatform.class) public class GreetingsTest { // ... }

The JUnitPlatform kelas adalah seorang pelari berasaskan JUnit4 yang membolehkan kita menjalankan ujian JUnit4 pada Platform JUnit.

Mari kita ingat bahawa JUnit4 tidak menyokong semua ciri-ciri Platform JUnit baru, jadi pelari ini mempunyai fungsi yang terhad.

Sekiranya kita memeriksa hasil ujian di Eclipse kita dapat melihat bahawa pelari JUnit4 digunakan:

3. Menjalankan Ujian di Persekitaran JUnit5

Sekarang mari kita jalankan ujian yang sama dalam versi Eclipse yang menyokong JUnit5. Dalam kes ini, kami tidak memerlukan anotasi @RunWith lagi dan kami boleh menulis ujian tanpa pelari:

public class GreetingsTest { @Test void whenCallingSayHello_thenReturnHello() { assertTrue("Hello".equals(Greetings.sayHello())); } }

Hasil ujian menunjukkan bahawa kami kini menggunakan pelari JUnit5:

4. Berhijrah dari Pelari Berasaskan JUnit4

Sekarang mari kita memindahkan ujian yang menggunakan pelari berasaskan JUnit4 ke JUnit5.

Kami akan menggunakan ujian Spring sebagai contoh:

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { SpringTestConfiguration.class }) public class GreetingsSpringTest { // ... }

Sekiranya kita mahu memindahkan ujian ini ke JUnit5, kita perlu mengganti anotasi @RunWith dengan @ExtendWith yang baru :

@ExtendWith(SpringExtension.class) @ContextConfiguration(classes = { SpringTestConfiguration.class }) public class GreetingsSpringTest { // ... }

The SpringExtension kelas disediakan oleh Spring 5 dan mengintegrasikan Rangka Kerja TestContext Spring ke dalam JUnit 5. @ExtendWith anotasi menerima mana-mana kelas yang melaksanakan Extension antara muka.

5. Kesimpulan

Dalam artikel ringkas ini, kami membahas penggunaan anotasi JUnit 4 @RunWith dalam kerangka JUnit5.

Kod sumber lengkap untuk contoh boleh didapati di GitHub.