当前位置:K88软件开发文章中心编程工具Gradle → 文章内容

Gradle Java 插件

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-24 10:31:36

的文档。 使用命令行选项的一些示例: gradle test --tests org.gradle.SomeTest.someSpecificFeature gradle test --tests *SomeTest.someSpecificFeature gradle test --tests *SomeSpecificTest gradle test --tests all.in.specific.package* gradle test --tests *IntegTest gradle test --tests IntegTestui* gradle someTestTask --tests UiTest someOtherTestTask --tests WebTest*ui 通过系统属性执行单一的测试 这种机制已经被上述的“测试过滤”所取代。 设置一个 taskName.single = testNamePattern 的系统属性将会只执行匹配 testNamePattern 的那些测试。这个 taskName 可以是一个完整的多项目路径,比如“sub1:sub2:test”,或者仅是一个任务名称。testNamePattern 将用于形成一个“*/testNamePattern.class” 的包含模式。如果这个模式无法找到任何测试,那么将会抛出一个异常。这是为了使你不会误以为测试通过。如果执行了一个以上的子项目的测试,该模式会被应用于每一个子项目中。如果在一个特定的子项目中,找不到测试用例,那么将会抛出异常。在这种情况下你可以使用路径标记法的模式,这样该模式就会只应用于特定的子项目的测试任务中。或者你可以指定要执行的任务的完整限定名称。你还可以指定多个模式。示例: gradle -Dtest.single=ThisUniquelyNamedTest test gradle -Dtest.single=a/b/ test gradle -DintegTest.single=*IntegrationTest integTest gradle -Dtest.single=:proj1:test:Customer build gradle -DintegTest.single=c/d/ :proj1:integTest 测试检测 Test 任务通过检查编译过的测试类来检测哪些类是测试类。默认情况下它会扫描所有的.class 文件。您可以设置自定义的 includes 或 excludes,这样就只有这些类才会被扫描。根据所使用的测试框架 (JUnit 或 TestNG),会使用不同的标准进行测试类的检测。 当使用 JUnit 时,我们扫描 JUnit 3 和 4 的测试类。如果满足以下的任何一个条件,这个类就被认为是一个 JUnit 测试类: 类或超类继承自 TestCase 或 GroovyTestCase 类或超类使用了 @RunWith 进行注解 类或超类含有一个带 @Test 注解的方法 当使用 TestNG 时,我们扫描所有带有 @Test 注解的方法。 请注意,抽象类不会被执行。Gradle 还将扫描测试类路径中的 jar 文件里的继承树。 如果你不想要使用测试类检测,可以通过设置 scanForTestClasses 为 false 来禁用它。这将使test任务只使用 includes / excludes 来找到测试类。如果 scanForTestClasses 为disabled,并且没有指定 include 或 exclude 模式,则使用各自的默认值。对于 include 的默认值是 "/*Tests.class", "*/Test.class",而对于exclude它的默认值是 "/Abstract*.class"。 测试分组 JUnit 和 TestNG 可以对测试方法进行复杂的分组。 为对 Junit 测试类和方法进行分组,JUnit 4.8 引入了类别的概念。test 任务可以实现一个规范,让你 include 和 exclude 想要的 JUnit 类别。 JUnit 类别 build.gradletest { useJUnit { includeCategories 'org.gradle.junit.CategoryA' excludeCategories 'org.gradle.junit.CategoryB' }} TestNG 框架有一个非常相似的概念。在 TestNG 中你可以指定不同的测试组。应从测试执行中 include 或 exclude 的测试组,可以在 test 任务中配置。 对 TestNG 测试分组 build.gradletest { useTestNG { excludeGroups 'integrationTests' includeGroups 'unitTests' }} 测试报告 test 任务默认情况下会生成以下结果。 一个 HTML 测试报告。 与 Ant Junit report 任务兼容的 XML 格式的结果。这种格式可以被许多工具所支持,比如CI服务器。 有效二进制格式的结果。这个任务会从这些二进制结果生成其他的结果。 您可以使用 Test.setTestReport()方法来禁用 HTML 测试报告。目前不能禁用其他的结果。 这里还有一个独立的 TestReport 任务类型,它可以从一个或多个 Test 任务实例生成的二进制结果中生成 HTML 测试报告。要使用这个任务类型,你需要定义一个 destinationDir 和要包含到报告的测试结果。这里是一个范例,从子项目的单元测试中生成一个联合报告: 为多个子项目创建一个单元测试报告 build.gradlesubprojects { apply plugin: 'java' // Disable the test report for the individual test task test { reports.html.enabled = false }}task testReport(type: TestReport) { destinationDir = file("$buildDir/reports/allTests") // Include the results from the `test` task in all subprojects reportOn subprojects*.test} 你应该注意到,TestReport 类型组合了多个测试任务的结果,并且需要聚合各个测试类的结果。这意味着,如果一个给定的测试类被多个 test 任务所执行,那么测试报告将包括那个类的所有执行结果,但它难以区分那个类的每次执行和它们的输出。 TestNG 参数化方法和报告 TestNG 支持参数化测试方法,允许一个特定的测试方法使用不同的输入执行多次。Gradle 会在这个方法的执行报告中包含进它的参数值。 给定一个带有两个参数,名为 aParameterizedTestMethod 参数化测试方法,它将使用名称这个名称进行报告 :aParameterizedTestMethod(toStringValueOfParam1, toStringValueOfParam2)。这使得在特定的迭代过程,很容易确定参数值。 常规值 表 23.14. Java 插件 - test 属性 任务属性 类型 默认值 testClassesDir File sourceSets.test.output.classesDir classpath

上一页  [1] [2] [3] [4] [5] [6] [7]  下一页


Gradle Java 插件