Melangkau Ujian dengan Maven

1. Pengenalan

Melangkau ujian selalunya merupakan idea yang tidak baik. Walau bagaimanapun, terdapat beberapa keadaan di mana ia berguna - mungkin ketika kita sedang mengembangkan kod baru dan ingin menjalankan binaan antara yang ujiannya tidak lulus atau disusun.

Hanya dalam situasi seperti ini, kami mungkin melewatkan ujian untuk mengelakkan overhead menyusun dan menjalankannya. Sudah tentu, pertimbangkan bahawa tidak menjalankan ujian boleh menyebabkan amalan pengkodan yang buruk.

Dalam tutorial ringkas ini, kami akan meneroka semua kemungkinan arahan dan pilihan untuk melangkau ujian menggunakan Maven .

2. Kitaran Hidup Maven

Sebelum mengetahui dengan terperinci cara melangkau ujian, kita mesti memahami bila ujian disusun atau dijalankan . Dalam artikel mengenai matlamat dan fasa Maven, kita mendalami konsep kitaran hidup Maven, tetapi untuk tujuan artikel ini, penting untuk mengetahui bahawa Maven dapat:

  1. Abaikan ujian
  2. Menyusun ujian
  3. Jalankan ujian

Dalam contoh kami, kami akan menggunakan fasa paket , yang merangkumi penyusunan dan menjalankan ujian. Pilihan yang diterokai sepanjang tutorial ini adalah milik Maven Surefire Plugin.

3. Menggunakan Bendera Perintah

3.1. Melangkau Penyusunan Ujian

Pertama, mari kita lihat contoh ujian yang tidak dapat disusun:

@Test public void thisDoesntCompile() { baeldung; }

Semasa kita menjalankan arahan baris arahan:

mvn package

Kami akan mendapat ralat:

[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 itu, mari kita terokai bagaimana melangkau fasa penyusunan untuk sumber ujian. Di Maven, kita boleh menggunakan bendera maven.test.skip :

mvn -Dmaven.test.skip package

Akibatnya, sumber ujian tidak disusun dan, oleh itu, tidak dilaksanakan.

3.2. Melangkau Pelaksanaan Ujian

Sebagai pilihan kedua, mari kita lihat bagaimana kita dapat menyusun folder ujian tetapi melangkau proses larian . Ini berguna untuk kes-kes di mana kita tidak mengubah tandatangan kaedah atau kelas tetapi kita telah mengubah logik perniagaan, dan sebagai hasilnya, kita gagal dalam ujian. Mari kita pertimbangkan kes ujian yang dibuat seperti di bawah, yang akan selalu gagal:

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

Oleh kerana kita menyertakan pernyataan gagal () , jika kita menjalankan fasa paket , binaan akan gagal dengan ralat:

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

Cuba bayangkan kita mahu melangkau ujian tetapi masih mahu menyusunnya. Dalam kes ini, kita boleh menggunakan bendera -DskipTests :

mvn -DskipTests package

dan fasa pakej akan berjaya. Juga, di Maven, ada plugin khusus untuk menjalankan ujian integrasi yang disebut maven failafe plugin. The -DskipTests akan melangkau pelaksanaan kedua-dua ujian unit (surefire) dan ujian integrasi (failafe). Untuk melewatkan ujian integrasi, kita boleh lulus harta sistem -DskipITs .

Akhirnya, perlu disebutkan bahawa bendera -Dmaven.test.skip.exec yang kini tidak lagi digunakan juga akan menyusun kelas ujian tetapi tidak akan menjalankannya.

4. Menggunakan Konfigurasi Maven

Sekiranya kita tidak termasuk menyusun atau menjalankan ujian untuk jangka masa yang lebih lama, kita dapat mengubah fail pom.xml untuk memasukkan konfigurasi yang tepat.

4.1. Melangkau Penyusunan Ujian

Seperti yang kita lakukan di bahagian sebelumnya, mari kita periksa bagaimana kita dapat mengelakkan penyusunan folder ujian. Dalam kes ini, kami akan menggunakan fail pom.xml . Mari tambahkan harta berikut:

 true 

Perlu diingat bahawa kita boleh mengganti nilai itu dengan menambahkan bendera yang berlawanan di baris perintah :

mvn -Dmaven.test.skip=false package

4.2. Melangkau Pelaksanaan Ujian

Sekali lagi, sebagai langkah kedua, mari kita meneroka bagaimana kita dapat membina folder ujian tetapi melangkau pelaksanaan ujian menggunakan konfigurasi Maven. Untuk melakukan itu, kita harus mengkonfigurasi Maven Surefire Plugin dengan harta tanah:

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

The Maven property tests.skip adalah harta tersuai yang kami tentukan sebelumnya. Oleh itu, kita boleh mengatasinya jika kita ingin menjalankan ujian:

mvn -Dtests.skip=false package

4. Kesimpulan

Dalam tutorial ringkas ini, kami telah meneroka semua alternatif yang ditawarkan oleh Maven untuk melangkau penyusunan dan / atau menjalankan ujian.

Kami melalui pilihan baris arahan Maven dan pilihan konfigurasi Maven.