我们用一个小项目来举例子。
项目结构如下:
▶ tree .
.
├── build.gradle
├── settings.gradle
└── src
├── main
│ ├── java
│ │ └── demo
│ │ └── Calculate.java
│ └── resources
└── test
├── java
│ └── demo
│ └── CalculateTest.java
└── resources
build.gradle
内容如下:
plugins {
id 'java'
}
group 'com.example'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
test {
// 这个配置,是为了让gradle在运行测试时将标准输出等展示出来
testLogging {
outputs.upToDateWhen {false}
showStandardStreams = true
}
}
src/main
目录下的 Calculate 类:
package demo;
public class Calculate {
public static int add(int a, int b) {
return a+b;
}
}
src/test
中的 CalculateTest 测试类:
package demo;
import org.junit.Assert;
import org.junit.Test;
public class CalculateTest {
@Test
public void testAdd01() {
System.out.println("测试 1+2");
Assert.assertEquals(3, Calculate.add(1, 2));
}
@Test
public void testAdd02() {
System.out.println("测试 2+2");
Assert.assertEquals(4, Calculate.add(2, 2));
}
}
运行整个项目的单测
使用 gradle 执行测试:
▶ gradle test
> Task :test
demo.CalculateTest > testAdd01 STANDARD_OUT
测试 1+2
demo.CalculateTest > testAdd02 STANDARD_OUT
测试 2+2
BUILD SUCCESSFUL in 2s
3 actionable tasks: 3 executed
注意,我们在 build.gradle 中配置了:
testLogging {
outputs.upToDateWhen {false}
showStandardStreams = true
}
如果不配置这段内容,gradle test
的结果是:
▶ gradle test
BUILD SUCCESSFUL in 1s
3 actionable tasks: 3 up-to-date
是的,没有什么详细内容。
运行一个测试类
▶ gradle test --tests demo.CalculateTest
> Task :test
demo.CalculateTest > testAdd01 STANDARD_OUT
测试 1+2
demo.CalculateTest > testAdd02 STANDARD_OUT
测试 2+2
BUILD SUCCESSFUL in 1s
3 actionable tasks: 1 executed, 2 up-to-date
运行单个测试
比如运行 CalculateTest 中的 testAdd01:
▶ gradle test --tests demo.CalculateTest.testAdd01
> Task :test
demo.CalculateTest > testAdd01 STANDARD_OUT
测试 1+2
BUILD SUCCESSFUL in 1s
3 actionable tasks: 1 executed, 2 up-to-date