Gradle精选: 运行单个单元测试

简介:

在Gradle下,我们可以通过由Java插件添加的测试任务,来运行单元测试代码。默认情况下,项目下的所有单元测试代码都会执行。但是,如果我们只想运行一个简单的单元测试,我们可以通过Java系统属性test.single来制定这个单元测试的名字。实际上,系统属性的样式是taskName.single. 其中taskName是项目下测试类任务的名称。下面我们将展示在构建中如何实践的:

首先,我们创建一个简单的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,我们需要在终端执行test任务的时候,添加一个Java系统属性 -Dtest.single=Sample

$ 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 system property value=Sample>*.class去查找单元测试类。因此,我们不需要输入单元测试的完整包名和类名。而为了仅仅执行AnotherSampleTest单元测试类,我们可以通过改变这个Java系统属性(test.single)来实现:

$ 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来同时运行 SampleTest 和A notherSampleTest。

$ 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系统属性都有效。我们在build.gradle 文件中添加了一个新的任务。我们命名这个测试任务为sampleTest,包含了我们所有的测试类。我们同样应用了和之前一样的testLogging设置,方便跟踪单元测试输出结果。

// 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 编写。

联系方式

sn0wdr1am

相关文章
|
3月前
|
测试技术
软件测试/测试开发/全日制|Pytest如何灵活地运行用例
软件测试/测试开发/全日制|Pytest如何灵活地运行用例
33 0
|
4月前
|
Ubuntu Linux 定位技术
Trinitycore学习之在Linux环境上搭建服务器并测试运行
Trinitycore学习之在Linux环境上搭建服务器并测试运行
67 0
|
4月前
|
存储 C语言 Windows
音视频使用qt测试ffmpeg接口时无法运行
音视频使用qt测试ffmpeg接口时无法运行
45 0
|
4月前
|
应用服务中间件 测试技术 nginx
dpdk环境搭建及运行helloworld测试
dpdk环境搭建及运行helloworld测试
84 0
|
6月前
|
运维 监控 测试技术
软件测试与运行
一、软件测试与运行 软件测试是在软件开发过程中对软件系统进行验证和验证的过程。它的目的是发现软件中的错误、缺陷和问题,并确保软件能够按照预期的方式运行。 软件测试可以分为以下几个阶段: 1. 单元测试:单元测试是对软件系统中最小的可测试单元进行测试,通常是对单个函数、方法或模块进行测试。它的目的是验证单元的功能是否正确,是否满足预期的输入和输出。 2. 集成测试:集成测试是对多个单元或模块进行组合和测试,验证它们之间的接口和交互是否正确。集成测试的目的是确保不同的组件能够正确地协同工作,以及整个系统的功能是否正常。 3. 系统测试:系统测试是对整个软件系统进行测试,验证系统是否满足用户需求和规
45 0
|
3月前
|
监控 数据可视化 Java
jvm性能调优实战 - 31从测试到上线_如何分析JVM运行状况及合理优化
jvm性能调优实战 - 31从测试到上线_如何分析JVM运行状况及合理优化
53 1
|
5月前
|
测试技术 KVM 开发工具
【OS Pintos】Pintos 内核库基本数据结构 | 运行测试用例 alarm-multiple
【OS Pintos】Pintos 内核库基本数据结构 | 运行测试用例 alarm-multiple
74 0
|
7月前
|
Web App开发 测试技术
Selenium+python之不打开浏览器,来运行测试用例
Selenium+python之不打开浏览器,来运行测试用例
163 0
|
7月前
|
机器学习/深度学习 传感器 算法
matlab改进秃鹰算法IBES 可直接运行 包括23个测试函数
matlab改进秃鹰算法IBES 可直接运行 包括23个测试函数
|
2月前
|
Java 测试技术 Maven
单元测试添加运行参数的maven插件
单元测试添加运行参数的maven插件
19 0