51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2156|回复: 0
打印 上一主题 下一主题

[原创] 使用Gradle运行集成测试

[复制链接]
  • TA的每日心情
    无聊
    前天 09:06
  • 签到天数: 530 天

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2018-12-19 16:11:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 测试积点老人 于 2018-12-19 16:12 编辑

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


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

    apply plugin: 'jetty'


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


    apply plugin: 'jetty'

    httpPort = 9876

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

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


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


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


    test {

      include '**/*Test.class'

      exclude '**/*IntegrationTest.class'

      }


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


    build.gradle

    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.dependsOn intTest


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

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 04:03 , Processed in 0.065472 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表