Gradle - Pengujian

Tugas pengujian secara otomatis mendeteksi dan menjalankan semua pengujian unit di set sumber pengujian. Ini juga menghasilkan laporan setelah eksekusi uji selesai. JUnit dan TestNG adalah API yang didukung.

Tugas tes menyediakan a Test.getDebug()metode yang dapat disetel untuk diluncurkan agar JVM menunggu debugger. Sebelum melanjutkan ke eksekusi, ini menetapkan pos debugger ke5005.

Deteksi Tes

Itu Test Taskmendeteksi kelas mana yang merupakan kelas pengujian dengan memeriksa kelas pengujian yang dikompilasi. Secara default memindai semua file .class. Anda dapat mengatur penyertaan / pengecualian khusus, hanya kelas-kelas itu yang akan dipindai. Bergantung pada framework pengujian yang digunakan (JUnit / TestNG), deteksi kelas pengujian menggunakan kriteria yang berbeda.

Saat menggunakan JUnit, kami memindai kelas pengujian JUnit 3 dan 4. Jika salah satu kriteria berikut cocok, kelas tersebut dianggap sebagai kelas pengujian JUnit -

  • Kelas atau kelas super memperluas TestCase atau GroovyTestCase
  • Kelas atau kelas super dianotasi dengan @RunWith
  • Kelas atau kelas super berisi metode yang dianotasi dengan @Test
  • Saat menggunakan TestNG, kami memindai metode yang dianotasi dengan @Test

Note- Kelas abstrak tidak dijalankan. Gradle juga memindai pohon warisan menjadi file jar di jalur kelas pengujian.

Jika Anda tidak ingin menggunakan deteksi kelas pengujian, Anda dapat menonaktifkannya dengan menyetel scanForTestClasses menjadi salah.

Menguji Pengelompokan

JUnit dan TestNG memungkinkan pengelompokan metode pengujian yang canggih. Untuk pengelompokan, kelas pengujian JUnit dan metode JUnit 4.8 memperkenalkan konsep kategori. Tugas pengujian memungkinkan spesifikasi kategori JUnit yang ingin Anda sertakan dan kecualikan.

Anda dapat menggunakan cuplikan kode berikut dalam file build.gradle untuk mengelompokkan metode pengujian.

test {
   useJUnit {
      includeCategories 'org.gradle.junit.CategoryA'
      excludeCategories 'org.gradle.junit.CategoryB'
   }
}

Sertakan dan Kecualikan Tes Tertentu

Itu Test kelas memiliki include dan excludemetode. Metode ini dapat digunakan untuk menentukan, pengujian mana yang sebenarnya harus dijalankan.

Jalankan hanya tes yang disertakan -

test {
   include '**my.package.name/*'
}

Lewati tes yang dikecualikan -

test {
   exclude '**my.package.name/*'
}

Contoh build.gradle file seperti yang ditunjukkan di bawah ini menunjukkan opsi konfigurasi yang berbeda.

apply plugin: 'java' // adds 'test' task

test {
   // enable TestNG support (default is JUnit)
   useTestNG()

   // set a system property for the test JVM(s)
   systemProperty 'some.prop', 'value'

   // explicitly include or exclude tests
   include 'org/foo/**'
   exclude 'org/boo/**'

   // show standard out and standard error of the test JVM(s) on the console
   testLogging.showStandardStreams = true

   // set heap size for the test JVM(s)
   minHeapSize = "128m"
   maxHeapSize = "512m"

   // set JVM arguments for the test JVM(s)
   jvmArgs '-XX:MaxPermSize=256m'
   
   // listen to events in the test execution lifecycle
   beforeTest { 
      descriptor → logger.lifecycle("Running test: " + descriptor)
   }

   // listen to standard out and standard error of the test JVM(s)
   onOutput { 
      descriptor, event → logger.lifecycle
         ("Test: " + descriptor + " produced standard out/err: " 
         + event.message )
   }
}

Anda dapat menggunakan sintaks perintah berikut untuk menjalankan beberapa tugas pengujian.

gradle <someTestTask> --debug-jvm