使用Gradle运行集成测试

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

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

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。app

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

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

为了使咱们在运行gradle build时也会运行intTest task,能够添加对intTest的依赖。ui

build.gradle
1
build.dependsOn intTest 

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

相关文章
相关标签/搜索