Gradle 测试

  • 测试

    测试任务会自动检测并执行测试源集中的所有单元测试。测试执行完成后,它还会生成报告。JUnit和TestNG是受支持的API。测试任务提供了一个Test.getDebug()方法,可以将其设置为启动以使JVM等待调试器。在继续执行之前,它将调试器post设置为5005。
  • 测试检测

    该测试任务检测哪些类是通过检查编译测试类测试类。默认情况下,它扫描所有.class文件。您可以设置自定义包含/排除,只扫描那些类。根据所使用的测试框架(JUnit / TestNG),测试类检测使用不同的标准。使用JUnit时,我们会同时扫描JUnit 3和4测试类。如果符合以下任何条件,则该类被视为JUnit测试类-
    • 类或超类继承了TestCase或GroovyTestCase
    • 类或超类使用@RunWith注解
    • 类或超类包含以@Test注解的方法
    • 使用TestNG时,我们扫描使用@Test注解的方法
    -不执行抽象类。Gradle还将继承树扫描到测试类路径上的jar文件中。
    如果您不想使用测试类检测,可以通过将scanForTestClasses设置为false 来禁用它。
  • 测试分组

    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