Gradle - การทดสอบ

งานทดสอบจะตรวจจับและดำเนินการทดสอบหน่วยทั้งหมดโดยอัตโนมัติในชุดแหล่งทดสอบ นอกจากนี้ยังสร้างรายงานเมื่อการดำเนินการทดสอบเสร็จสมบูรณ์ JUnit และ TestNG เป็น API ที่รองรับ

งานทดสอบจัดเตรียมไฟล์ Test.getDebug()วิธีการที่สามารถตั้งค่าให้เปิดใช้งานเพื่อให้ JVM รอดีบักเกอร์ ก่อนดำเนินการตามขั้นตอนจะตั้งค่าโพสต์ดีบักเกอร์เป็น5005.

การตรวจจับการทดสอบ

Test Taskตรวจจับว่าคลาสใดเป็นคลาสทดสอบโดยการตรวจสอบคลาสทดสอบที่คอมไพล์ โดยค่าเริ่มต้นจะสแกนไฟล์. class ทั้งหมด คุณสามารถตั้งค่าการรวม / ไม่รวมแบบกำหนดเองได้โดยจะสแกนเฉพาะคลาสเหล่านั้นเท่านั้น ขึ้นอยู่กับกรอบการทดสอบที่ใช้ (JUnit / TestNG) การตรวจจับคลาสทดสอบใช้เกณฑ์ที่แตกต่างกัน

เมื่อใช้ JUnit เราจะสแกนหาทั้งคลาสทดสอบ JUnit 3 และ 4 หากตรงตามเกณฑ์ใด ๆ ต่อไปนี้คลาสนั้นจะถือว่าเป็นคลาสทดสอบ JUnit -

  • คลาสหรือซูเปอร์คลาสขยาย TestCase หรือ GroovyTestCase
  • คลาสหรือซูเปอร์คลาสมีคำอธิบายประกอบ @RunWith
  • คลาสหรือซูเปอร์คลาสมีเมธอดที่มีคำอธิบายประกอบ @Test
  • เมื่อใช้ TestNG เราจะสแกนหาวิธีการที่มีคำอธิบายประกอบ @Test

Note- ไม่มีการดำเนินการคลาสนามธรรม Gradle ยังสแกนแผนผังการสืบทอดลงในไฟล์ jar บน classpath การทดสอบ

หากคุณไม่ต้องการใช้การตรวจหาคลาสทดสอบคุณสามารถปิดใช้งานได้โดยการตั้งค่า scanForTestClasses เป็นเท็จ

ทดสอบการจัดกลุ่ม

JUnit และ TestNG ช่วยให้สามารถจัดกลุ่มวิธีการทดสอบที่ซับซ้อนได้ สำหรับการจัดกลุ่มคลาสทดสอบ JUnit และวิธีการ JUnit 4.8 แนะนำแนวคิดของหมวดหมู่ งานทดสอบอนุญาตให้กำหนดคุณสมบัติของหมวดหมู่ JUnit ที่คุณต้องการรวมและแยกออก

คุณสามารถใช้ข้อมูลโค้ดต่อไปนี้ในไฟล์ build.gradle เพื่อจัดกลุ่มวิธีการทดสอบ

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

รวมและไม่รวมการทดสอบเฉพาะ

Test คลาสมีไฟล์ include และ excludeวิธี. วิธีการเหล่านี้สามารถใช้เพื่อระบุได้ว่าควรรันการทดสอบใด

เรียกใช้การทดสอบที่รวมไว้เท่านั้น -

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

ข้ามการทดสอบที่ยกเว้น -

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

ตัวอย่าง build.gradle ตามที่แสดงด้านล่างนี้จะแสดงตัวเลือกการกำหนดค่าต่างๆ

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

คุณสามารถใช้ไวยากรณ์คำสั่งต่อไปนี้เพื่อดำเนินงานทดสอบบางอย่าง

gradle <someTestTask> --debug-jvm