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.