Melewati Tes dengan Maven

1. Perkenalan

Melewatkan ujian seringkali merupakan ide yang buruk. Namun, ada beberapa situasi di mana ini bisa berguna - mungkin ketika kita mengembangkan kode baru dan ingin menjalankan build perantara di mana pengujian tidak lolos atau dikompilasi.

Hanya dalam situasi seperti ini, kita mungkin melewatkan pengujian untuk menghindari overhead kompilasi dan menjalankannya. Tentu saja, pertimbangkan bahwa tidak menjalankan pengujian dapat menyebabkan praktik pengkodean yang buruk.

Dalam tutorial singkat ini, kita akan menjelajahi semua kemungkinan perintah dan opsi untuk melewati tes menggunakan Maven .

2. Siklus Hidup Maven

Sebelum membahas detail tentang cara melewati pengujian, kita harus memahami kapan pengujian dikompilasi atau dijalankan . Dalam artikel tentang tujuan dan fase Maven, kita membahas lebih dalam tentang konsep siklus hidup Maven, tetapi untuk tujuan artikel ini, penting untuk diketahui bahwa Maven dapat:

  1. Abaikan tes
  2. Kompilasi tes
  3. Jalankan tes

Dalam contoh kami, kami akan menggunakan fase paket , yang mencakup kompilasi dan menjalankan pengujian. Opsi yang dieksplorasi sepanjang tutorial ini adalah milik Plugin Maven Surefire.

3. Menggunakan Bendera Baris Perintah

3.1. Melewati Kompilasi Tes

Pertama, mari kita lihat contoh pengujian yang tidak dapat dikompilasi:

@Test public void thisDoesntCompile() { baeldung; }

Saat kami menjalankan perintah baris perintah:

mvn package

Kami akan mendapatkan kesalahan:

[INFO] ------------------------------------------------------------- [ERROR] COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] /Users/baeldung/skip-tests/src/test/java/com/antmordel/skiptests/PowServiceTest.java:[11,9] not a statement [INFO] 1 error

Oleh karena itu, mari jelajahi cara melewati fase kompilasi untuk sumber pengujian. Di Maven, kita bisa menggunakan flag maven.test.skip :

mvn -Dmaven.test.skip package

Akibatnya, sumber pengujian tidak dikompilasi dan, oleh karena itu, tidak dijalankan.

3.2. Melewati Eksekusi Tes

Sebagai opsi kedua, mari kita lihat bagaimana kita dapat mengkompilasi folder uji tetapi melewati proses yang dijalankan . Ini berguna untuk kasus di mana kami tidak mengubah tanda tangan metode atau kelas tetapi kami telah mengubah logika bisnis, dan sebagai hasilnya, kami menghentikan pengujian. Mari kita pertimbangkan test case yang dibuat-buat seperti di bawah ini, yang akan selalu gagal:

@Test public void thisTestFails() { fail("This is a failed test case"); }

Karena kami menyertakan pernyataan fail () , jika kami menjalankan fase paket , build akan gagal dengan kesalahan:

[ERROR] Failures: [ERROR] PowServiceTest.thisTestFails:16 This is a failed test case [INFO] [ERROR] Tests run: 2, Failures: 1, Errors: 0, Skipped: 0

Bayangkan kita ingin melewatkan menjalankan pengujian tetapi tetap ingin mengkompilasinya. Dalam kasus ini, kita dapat menggunakan tanda -DskipTests :

mvn -DskipTests package

dan fase paket akan berhasil. Selain itu, di Maven, ada plugin khusus untuk menjalankan tes integrasi yang disebut plugin maven failafe. The -DskipTests akan melewatkan eksekusi keduanya unit test (jitu) dan tes integrasi (failsafe). Untuk melewatkan tes integrasi, kita bisa melewatkan properti sistem -DskipITs .

Terakhir, perlu disebutkan bahwa flag -Dmaven.test.skip.exec yang sekarang tidak digunakan lagi juga akan mengompilasi kelas pengujian tetapi tidak akan menjalankannya.

4. Menggunakan Konfigurasi Maven

Jika kita perlu mengecualikan kompilasi atau menjalankan pengujian untuk jangka waktu yang lebih lama, kita dapat memodifikasi file pom.xml untuk menyertakan konfigurasi yang tepat.

4.1. Melewati Kompilasi Tes

Seperti yang kita lakukan di bagian sebelumnya, mari kita periksa bagaimana kita dapat menghindari kompilasi folder pengujian. Dalam kasus ini, kami akan menggunakan file pom.xml . Mari tambahkan properti berikut:

 true 

Ingatlah bahwa kita dapat mengganti nilai itu dengan menambahkan bendera yang berlawanan di baris perintah :

mvn -Dmaven.test.skip=false package

4.2. Melewati Eksekusi Tes

Sekali lagi, sebagai langkah kedua, mari jelajahi bagaimana kita dapat membuat folder pengujian tetapi melewati eksekusi pengujian menggunakan konfigurasi Maven. Untuk melakukan itu, kita harus mengkonfigurasi Plugin Maven Surefire dengan properti:

 true   org.apache.maven.plugins maven-surefire-plugin 2.22.1  ${tests.skip}  

Properti Maven test.skip adalah properti kustom yang telah kita tentukan sebelumnya. Oleh karena itu, kita dapat menggantinya jika kita ingin menjalankan pengujian:

mvn -Dtests.skip=false package

4. Kesimpulan

Dalam tutorial singkat ini, kita telah menjelajahi semua alternatif yang ditawarkan Maven untuk melewati kompilasi dan / atau menjalankan pengujian.

Kami membahas opsi baris perintah Maven dan opsi konfigurasi Maven.