Gradle进阶:2: 结合JUnit进行单体测试

在这里插入图片描述
在前面一篇文章中介绍了如何在spring boot的项目中使用gradle进行构建,这篇文章将会给这个例子添加单体测试。

事前准备

环境准备

组件/框架 版本
JDK 1.8.0
Gradle 4.10.2
Spring Boot 2.1.1
liumiaocn:springboot liumiao$ gradle -v

------------------------------------------------------------
Gradle 4.10.2
------------------------------------------------------------

Build time:   2018-09-19 18:10:15 UTC
Revision:     b4d8d5d170bb4ba516e88d7fe5647e2323d791dd

Kotlin DSL:   1.0-rc-6
Kotlin:       1.2.61
Groovy:       2.4.15
Ant:          Apache Ant(TM) version 1.9.11 compiled on March 23 2018
JVM:          1.8.0_191 (Oracle Corporation 25.191-b12)
OS:           Mac OS X 10.14 x86_64

liumiaocn:springboot liumiao$

spring boot demo应用

创建的spring boot demo应用的详细与说明,请参看:

  • https://blog.csdn.net/liumiaocn/article/details/84935401

目录结构

使用https://start.spring.io/或者自己手动创建如下结构的目录结构

liumiaocn:springboot liumiao$ tree 
.
├── build.gradle
├── settings.gradle
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── liumiaocn
    │   │           └── springbootdemo
    │   │               └── SpringbootdemoApplication.java
    │   └── resources
    │       └── application.properties
    └── test
        └── java
            └── com
                └── liumiaocn
                    └── springbootdemo
                        └── SpringbootdemoApplicationTests.java

12 directories, 5 files
liumiaocn:springboot liumiao$

可以看出,增加了测试相关的代码SpringbootdemoApplicationTests.java

SpringbootdemoApplicationTests说明

liumiaocn:springboot liumiao$ cat src/test/java/com/liumiaocn/springbootdemo/SpringbootdemoApplicationTests.java 
package com.liumiaocn.springbootdemo;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootdemoApplicationTests {

	@Test
	public void contextLoads() {
	}

}
liumiaocn:springboot liumiao$
  • COC:根据惯例进行定义测试类的名称
  • SpringBootTest注解:SpringBootTest是1.4之后引入的一个注解,使得springboot的测试变得更加方便
  • RunWith注解:使用了此注解的情况下,JUnit会调用RunWith中所指定的类。不同的框架提供相应的Runner用于测试,比如Junit自己的JUnit4.class,在比如spring的SpringJUnit4ClassRunner或者SpringRunner,都可与之结合使用。
  • Test注解:Junit的常用注解之一,用于定义测试方法,不再赘述。

设定build.gradle

在build.gradle中添加

testImplementation(‘org.springframework.boot:spring-boot-starter-test’)

添加后的build.gradle如下

liumiaocn:springboot liumiao$ cat build.gradle 
buildscript {
	ext {
		springBootVersion = '2.1.1.RELEASE'
	}
	repositories {
		mavenCentral()
	}
	dependencies {
		classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
	}
}

apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'com.liumiaocn'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
	mavenCentral()
}


dependencies {
	implementation('org.springframework.boot:spring-boot-starter-web')
        testImplementation('org.springframework.boot:spring-boot-starter-test')
}
liumiaocn:springboot liumiao$

执行测试

通过使用gradle test可以执行测试并生成测试结果报告

  • 执行日志
liumiaocn:springboot liumiao$ ls
build           build.gradle    settings.gradle src
liumiaocn:springboot liumiao$ gradle clean
Starting a Gradle Daemon (subsequent builds will be faster)

BUILD SUCCESSFUL in 3s
1 actionable task: 1 executed
liumiaocn:springboot liumiao$ gradle test

> Task :test
2018-12-12 08:05:49.791  INFO 51042 --- [       Thread-5] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

BUILD SUCCESSFUL in 5s
4 actionable tasks: 4 executed
liumiaocn:springboot liumiao$

可以看到,gradle test生成了一个reports的目录,测试执行结果的报告信息在此目录中保存,只通过index.html即可确认结果:

liumiaocn:springboot liumiao$ tree build/reports
build/reports
└── tests
    └── test
        ├── classes
        │   └── com.liumiaocn.springbootdemo.SpringbootdemoApplicationTests.html
        ├── css
        │   ├── base-style.css
        │   └── style.css
        ├── index.html
        ├── js
        │   └── report.js
        └── packages
            └── com.liumiaocn.springbootdemo.html

6 directories, 6 files
liumiaocn:springboot liumiao$

结果确认

确认gradle test执行所产生的结果,可以通过index.html作为入口进行确认:
Gradle进阶:2: 结合JUnit进行单体测试_第1张图片
缺省以package为单位的测试summary,也可以确认classes为单位的统计信息
Gradle进阶:2: 结合JUnit进行单体测试_第2张图片
点击确认更加详细的测试信息
Gradle进阶:2: 结合JUnit进行单体测试_第3张图片

总结

可以看到结合使用spring boot提供的测试框架,使用gradle进行spring boot的测试,从测试的执行到结果的确认都十分方便,在下篇文章中将会进一步展开对测试覆盖率的确认进行可视化的集成。

你可能感兴趣的:(#,gradle,#,持续构建)