如果Gradle构建的项目是一个web项目的话,里面可能包含一些集成测试和功能性测试。这些测试和单元测试不同之处是在运行之前要先在本地将web服务启动起来,并且跑完测试后能够自动的关闭web服务。

在本地启动web服务我们可以使用Gradle内置的jetty插件。jetty是一个轻量级的web容器,其执行速度快,配置简单,远程调试方便。启用jetty只需在build.gradle中加入对这个插件的引用。

build.gradle
1
apply plugin: 'jetty'

之后可以配置war包的名称,启动的端口等属性。

build.gradle
1
2
3
4
5
6
apply plugin: 'jetty'

httpPort = 9876

[jettyRun, jettyRunWar, jettyStop]*.stopPort = 9966
[jettyRun, jettyRunWar, jettyStop]*.stopKey = 'stopKey'

我们需要将集成测试与一般的单元测试分开。因为单元测试并不需要事先启动web服务,保证其执行速度快,能够得到更快的反馈。一般做法是单元测试后缀名为Test.java,集成测试后缀名为IntegrationTest.java。

配置单元测试执行的测试集合。

build.gradle
1
2
3
4
test {
include '**/*Test.class'
exclude '**/*IntegrationTest.class'
}

然后新建一个Task,用于运行集成测试。

build.gradle
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
task intTest(type: Test, dependsOn: test) {

  include '**/*IntegrationTest.class'

  doFirst {

      jettyRun.daemon = true
jettyRun.execute() } doLast {
jettyStop.execute()
}
}

上述代码首先是创建一个名为intTest的task,其类型为Test,依赖于test task。该集成测试只会运行后缀名为IntegrationTest的测试类。在运行测试之前,首先采用后台模式启动jetty服务器,运行完测试后再调用jettyStop task停止jetty服务。

为了使我们在运行gradle build时也会运行intTest task,可以添加对intTest的依赖。

build.gradle
1
build.dependsOn intTest

这样在运行gradle build时也会运行集成测试。并且在集成测试前后web服务会自动的启动和关闭。

使用Gradle运行集成测试的更多相关文章

  1. 用 gradle 运行 spring boot 项目

    用 gradle 运行 spring boot 项目(网页中的第6章:https://docs.spring.io/spring-boot/docs/2.1.1.RELEASE/gradle-plug ...

  2. Android Studio配置Socks5代理后Gradle运行不正常

    第一次在Mac上运行Android Studio,遇到了一系列问题,其中一个代理问题搞得我是不知所措,在此记录. 如果你遇到了如下图的问题,那么恭喜你你可能已经找到了解决方案也就是本文: 一般,我们为 ...

  3. GRADLE下运行main函数/执行测试用例

    group 'gongsibao.ged' version '1.0-SNAPSHOT' apply plugin: 'java' apply plugin: 'idea' sourceCompati ...

  4. Ubuntu18.04 运行 Gradle 4.9

    简介 Gradle是一个基于Apache Ant和Apache Maven的项目自动化构建工具, 使用一种基于Groovy的特定领域语言(domain-specific language DSL)来声 ...

  5. 如何运行使用gradle打包的项目

    目标:https://github.com/davenkin/springmvc4-helloworld 使用SpringMVC编写的一个HelloWorld程序. 初学Gradle只能一步步摸索前进 ...

  6. Android开发:《Gradle Recipes for Android》阅读笔记(翻译)5.1——单元测试

    问题: 你想要测试app中的非android部分. 解决方案: 可以使用Android Studio1.1里面增加的单元测支持和Android的Gradle插件. 讨论: ADT插件只支持集成测试,并 ...

  7. flutter driver 集成测试

    最近一直断断续续的学习flutter,今天跟大家介绍一下flutter driver测试. flutter测试基础 Flutter的测试遵循Android的测试规范进行了分层. 单元测试:测试单一功能 ...

  8. ASP.NET Core 中文文档 第五章 测试(5.2)集成测试

    原文: Integration Testing 作者: Steve Smith 翻译: 王健 校对: 孟帅洋(书缘) 集成测试确保应用程序的组件组装在一起时正常工作. ASP.NET Core支持使用 ...

  9. [转]加速Android Studio/Gradle构建

    加速Android Studio/Gradle构建 android android studio gradle   已经使用Android Studio进行开发超过一年,随着项目的增大,依赖库的增多, ...

随机推荐

  1. pyhton函数——黑板客老师课程学习

    1.基本语法 语法: def func_name (arguments)  定义 statements return x,y x,y=func_name(para)   调用 作用域: 可以给内置的函 ...

  2. JS根据服务器时间倒计时

    原文链接:http://caibaojian.com/daojishi-2.html //获取服务器时间 function getSevertime(){ var xmlHttp = new XMLH ...

  3. php.ini 不生效问题extension

    date.timezone = PRC extension_dir = "ext"

  4. [aspx]控件及代码小例

    1. 原生 asp 方式遍历 DataTable  2. aspx 的控件 Repeater 后台绑定 <%-- DataTable dt = OleDbHelper.GetTable(&quo ...

  5. SAP 禁止某个库位的货物移动

    SAP 禁止某个库位的货物移动 1.先去spro --> 物料管理 --> 库存管理和实际库存 --> 权限管理 --> 授权检查存储位置 将要禁止的库位后的权限勾选上, 2. ...

  6. XE3随笔12:TSuperTableString、TSuperAvlEntry

    通过 ISuperObject.AsObject 可获取一个 TSuperTableString 对象. TSuperTableString 的常用属性: count.GetNames.GetValu ...

  7. java获取系统信息

    public class SystemInfo { public static void main(String[] args) { //系统属性 Properties prop = System.g ...

  8. jquery实现div遮罩层

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. oracle安装心得

    1.官网下载 oracle 11g r2 2.官网下载的oracle包括两个文件夹file1和file2,需要将解压后的file2中的stage-components文件夹下的内容复制到file1-s ...

  10. ueditor .net版本上传不了图片问题

    百度的Ueditor适合中国人,所以,选择了它,可是恶梦才刚刚开始,最头痛的就是图片死活就是上传不成功,悲剧中.. 现在来分析下为什么报错:什么也不说了,上图