Gradle - Test

Test görevi, test kaynak kümesindeki tüm birim testlerini otomatik olarak algılar ve yürütür. Ayrıca, testin yürütülmesi tamamlandığında bir rapor oluşturur. JUnit ve TestNG desteklenen API'lerdir.

Test görevi, Test.getDebug()JVM'nin bir hata ayıklayıcıyı beklemesi için başlatılacak şekilde ayarlanabilen yöntem. Yürütmeye geçmeden önce, hata ayıklayıcı gönderisini şu şekilde ayarlar:5005.

Test Algılama

Test Taskderlenen test sınıflarını inceleyerek hangi sınıfların test sınıfları olduğunu algılar. Varsayılan olarak tüm .class dosyalarını tarar. Özel dahil etme / hariç tutma ayarlayabilirsiniz, yalnızca bu sınıflar taranacaktır. Kullanılan test çerçevesine (JUnit / TestNG) bağlı olarak, test sınıfı algılama farklı kriterler kullanır.

JUnit kullanırken, hem JUnit 3 hem de 4 test sınıflarını tarıyoruz. Aşağıdaki kriterlerden herhangi biri eşleşirse, sınıf bir JUnit test sınıfı olarak kabul edilir -

  • Sınıf veya süper sınıf, TestCase veya GroovyTestCase'i genişletir
  • Sınıf veya bir süper sınıfa @RunWith ile açıklama eklenir
  • Sınıf veya bir süper sınıf, @Test ile açıklanmış bir yöntem içerir
  • TestNG kullanırken, @Test ile açıklanmış yöntemleri tararız

Note- Soyut sınıflar çalıştırılmaz. Gradle ayrıca miras ağacını test sınıf yolunda jar dosyalarına tarar.

Test sınıfı algılamayı kullanmak istemiyorsanız, ayarlayarak devre dışı bırakabilirsiniz. scanForTestClasses yanlış.

Test Gruplaması

JUnit ve TestNG, karmaşık test yöntemlerinin gruplandırılmasına izin verir. Gruplama için, JUnit test sınıfları ve yöntemleri JUnit 4.8, kategori kavramını sunar. Test görevi, dahil etmek ve hariç tutmak istediğiniz JUnit kategorilerinin spesifikasyonuna izin verir.

Test yöntemlerini gruplamak için build.gradle dosyasında aşağıdaki kod parçacığını kullanabilirsiniz.

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

Belirli Testleri Dahil Et ve Hariç Tut

Test sınıfta include ve excludeyöntem. Bu yöntemler, gerçekte hangi testlerin çalıştırılması gerektiğini belirlemek için kullanılabilir.

Yalnızca dahil edilen testleri çalıştırın -

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

Hariç tutulan testleri atla -

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

Örnek build.gradle dosyası aşağıda gösterildiği gibi farklı yapılandırma seçeneklerini gösterir.

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 )
   }
}

Bazı test görevlerini yürütmek için aşağıdaki komut sözdizimini kullanabilirsiniz.

gradle <someTestTask> --debug-jvm