Saya mencoba menemukan pendekatan yang memungkinkan saya menjalankan tes tunggal dari kelas JUnit hanya menggunakan baris perintah dan java.
Saya dapat menjalankan seluruh rangkaian tes dari kelas menggunakan berikut ini:
java -cp .... org.junit.runner.JUnitCore org.package.classname
Yang benar-benar ingin saya lakukan adalah seperti ini:
java -cp .... org.junit.runner.JUnitCore org.package.classname.method
atau:
java -cp .... org.junit.runner.JUnitCore org.package.classname#method
Saya perhatikan bahwa mungkin ada cara untuk melakukan ini menggunakan anotasi JUnit, tetapi saya lebih suka untuk tidak mengubah sumber kelas pengujian saya dengan tangan (mencoba mengotomatiskan ini). Saya juga melihat bahwa Maven mungkin memiliki cara untuk melakukan ini, tetapi jika memungkinkan saya ingin menghindari bergantung pada Maven.
Jadi saya bertanya-tanya apakah ada cara untuk melakukan ini?
Poin utama yang saya cari:
- Kemampuan untuk menjalankan satu pengujian dari kelas pengujian JUnit
- Command Line (menggunakan JUnit)
- Hindari memodifikasi sumber pengujian
- Hindari menggunakan alat tambahan
java
unit-testing
command-line
junit
Kevin Jalbert
sumber
sumber
Jawaban:
Anda dapat membuat runner JUnit barebone kustom dengan cukup mudah. Ini salah satu yang akan menjalankan metode pengujian tunggal dalam bentuk
com.package.TestClass#methodName
:Anda bisa memintanya seperti ini:
Setelah melihat sekilas di sumber JUnit, saya sampai pada kesimpulan yang sama seperti Anda bahwa JUnit tidak mendukung ini secara native. Ini tidak pernah menjadi masalah bagi saya karena semua IDE memiliki integrasi JUnit khusus yang memungkinkan Anda menjalankan metode pengujian di bawah kursor, di antara tindakan lainnya. Saya tidak pernah menjalankan tes JUnit dari baris perintah secara langsung; Saya selalu membiarkan IDE atau build tool (Ant, Maven) mengurusnya. Terutama karena titik masuk CLI default (JUnitCore) tidak menghasilkan keluaran apa pun selain kode keluar bukan nol pada kegagalan pengujian.
CATATAN: untuk JUnit versi> = 4.9 Anda memerlukan pustaka hamcrest di classpath
sumber
Saya menggunakan Maven untuk membangun proyek saya, dan menggunakan plugin SureFire maven untuk menjalankan tes junit. Asalkan Anda memiliki pengaturan ini, maka Anda dapat melakukan:
Dalam contoh ini, kami baru saja menjalankan metode pengujian bernama "testMethod" di dalam Kelas "GreatTestClass".
Untuk detail lebih lanjut, lihat http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
sumber
Kami menggunakan IntelliJ, dan menghabiskan cukup banyak waktu untuk mencoba mencari tahu juga.
Pada dasarnya, ini melibatkan 2 langkah:
Langkah 1: Kumpulkan Kelas Tes
% javac -cp .:"/Applications/IntelliJ IDEA 13 CE.app/Contents/lib/*" SetTest.java
Langkah 2: Jalankan Tes
% java -cp .:"/Applications/IntelliJ IDEA 13 CE.app/Contents/lib/*" org.junit.runner.JUnitCore SetTest
sumber