Junit 5 - Part 2
Pendahuluan
JUnit secara de facto merupakan platform yang paling banyak dipakai untuk testing di Java.
Mengenai Pendahuluan JUnit , bisa dilihat di sini
Mengenai JUnit 5 , bisa dilihat di sini
Apa perbedaan mendasar JUnit 4 dengan JUnit 5 ?
Kembali lagi kepada penjelasan di artikel sebelumnya bahwa JUnit 4 dan JUnit 5 mempunyai perbedaan :
- JUnit 5 lebih memperhatikan pemisahan security of concern antara core framework testingnya, testing enginenya, lauching platform, dan implementasi spesifik nya.
- JUnit 5 dibuat dengan mindset untuk bisa memanfaatkan fitur fungsional dari Java 8, termasuk fitur lambda.
- JUnit 5 dibuat dengan mindset agar mudah melakukan integrasi dengan testing framework lainnya seperti TestNg, Spock, ScalaTest, dll.
Oleh karena itu JUnit 5 merupakan struktur yang berbeda dengan struktur yang sudah ada di JUnit 4.
Perbedaan Anotasi
Dengan refactoring JUnit 4 menjadi JUnit 5, maka banyak anotasi dari JUnit 4 yang berganti nama.
Tentunya juga berganti nama package juga tergantung dari perubahannya.
Coba kita lihat perbedaan Anotasi yang ada :
JUnit 4 | JUnit 5 | Fungsinya |
---|---|---|
@Test | @Test | Anotasi untuk method yang dites |
@BeforeClass | @BeforeAll | Dijalankan sebelum menjalankan semua test method di class |
@AfterClass | @AfterAll | Dijalankan setelah menjalankan semua test method di class |
@Before | @BeforeEach | Dijalankan sebelum menjalankan setiap test method di class |
@After | @AfterEach | Dijalankan setelah menjalankan setiap test method di class |
@Ignore | @Disabled | Membuat test method atau test class tidak dijalankan |
- | @TestFactory | Untuk keperluan test secara dinamik |
- | @Nested | Untuk keperluan test bersarang |
@Category | @Tag | Tagging dan filtering |
- | @ExtendWith | Untuk ekstensi, seperti misalnya extension dengan Spring |
Perbedaan Lainnya
Tentu saja ada perbedaan lainnya.
Misalnya :
- perbedaan lokasi package untuk Assertion dan lokasi parameter dari method nya. dari org.junit.Assert ke org.junit.jupiter.Assertions
- perbedaan lokasi package di class2 lain. Dari org.junit ke org.junit.jupiter
- di JUnit 4, setiap method test harus kita bikin dengan public access modifier. Akan tetapi dengan JUnit 5, kita tidak perlu membuatnya harus public, bisa dengan protected atau package-private.
- adanya penambahan fitur-fitur baru, seperti @TestFactory, @Nested, @Tag, @Parameterized test, dll.