Gradle的好处:运行单个测试

我们可以使用Java插件添加的test任务,使用Gradle运行测试代码。 默认情况下,将执行项目中找到的所有测试。 如果要运行单个测试,则可以使用Java系统属性test.single和测试名称。 实际上,系统属性的模式是taskName .singletaskName是我们项目中Test类型的任务的名称。 我们将看到如何在构建中使用它。

首先,我们创建一个简单的build.gradle文件来运行测试:

// File: build.gradle
apply plugin: 'java'
 
repositories {
    mavenCentral()
}
 
dependencies {
    testCompile 'junit:junit:[4,)'
}
 
test {
    testLogging {
        // Show that tests are run in the command-line output
        events 'started', 'passed'
    }
}

接下来,我们创建两个测试类,每个类都有一个单独的测试方法,只是为了说明我们以后可以将它们作为单个测试来调用。

// File: src/test/java/com/mrhaki/gradle/SampleTest.java
package com.mrhaki.gradle;
 
import static org.junit.Assert.*;
import org.junit.*;
 
public class SampleTest {
 
    @Test public void sample() {
        assertEquals("Gradle is gr8", "Gradle is gr8");
    }
    
}
// File: src/test/java/com/mrhaki/gradle/AnotherSampleTest.java
package com.mrhaki.gradle;
 
import static org.junit.Assert.*;
import org.junit.*;
 
public class AnotherSampleTest {
 
    @Test public void anotherSample() {
        assertEquals("Gradle is great", "Gradle is great");
    }
}

要仅运行SampleTest我们必须使用Java系统属性-Dtest.single=Sample从命令行调用test任务:

$ gradle -Dtest.single=Sample test
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestJava
:processTestResources UP-TO-DATE
:testClasses
:test
 
com.mrhaki.gradle.SampleTest > sample STARTED
 
com.mrhaki.gradle.SampleTest > sample PASSED
 
BUILD SUCCESSFUL
 
Total time: 11.404 secs

请注意,现在仅执行一个测试。 Gradle将获取值Sample ,并在以下模式中使用它** / <Java系统属性value = Sample> *。class来查找测试类。 因此,我们不必键入单个测试类的完整软件包和类名。 要仅调用AnotherSampleTest测试类,我们使用Java systme属性的其他值运行test任务:

$ gradle -Dtest.single=AnotherSample test
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestJava
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test
 
com.mrhaki.gradle.AnotherSampleTest > anotherSample STARTED
 
com.mrhaki.gradle.AnotherSampleTest > anotherSample PASSED
 
BUILD SUCCESSFUL
 
Total time: 5.62 secs

我们还可以对Java系统属性使用模式,以运行适用于该模式的多个测试。 例如,我们可以使用* Sample来运行SampleTestAnotherSampleTest

$ gradle -Dtest.single=*Sample test
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestJava
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test
 
com.mrhaki.gradle.AnotherSampleTest > anotherSample STARTED
 
com.mrhaki.gradle.AnotherSampleTest > anotherSample PASSED
 
com.mrhaki.gradle.SampleTest > sample STARTED
 
com.mrhaki.gradle.SampleTest > sample PASSED
 
BUILD SUCCESSFUL
 
Total time: 5.605 secs

为了显示Java系统属性也适用于Test类型的其他任务,我们将一个新任务添加到build.gradle文件中。 我们将任务命名为sampleTest并包括我们的测试。 现在,我们还将相同的testLogging应用于Test类型的所有任务,以便我们看到输出。

// File: build.gradle
apply plugin: 'java'
 
repositories {
    mavenCentral()
}
 
dependencies {
    testCompile 'junit:junit:[4,)'
}
 
task sampleTest(type: Test, dependsOn: testClasses) {
    include '**/*Sample*'
}
 
tasks.withType(Test) {
    testLogging {
        events 'started', 'passed'
    }
}

接下来,我们只想运行SampleTest类,但是现在我们使用Java系统属性-DsampleTest.single=S*

$ gradle -DsampleTest.single=S* sampleTest
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:sampleTest
 
com.mrhaki.gradle.SampleTest > sample STARTED
 
com.mrhaki.gradle.SampleTest > sample PASSED
 
BUILD SUCCESSFUL
 
Total time: 10.677 secs

用Gradle 1.6编写的代码

参考: Gradle的好处:在JDriven博客上,由我们的JCG合作伙伴 Hubert Ikkink 运行单个测试

翻译自: https://www.javacodegeeks.com/2013/05/gradle-goodness-running-a-single-test.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值