显示导航

365bet地区代码覆盖率

在本指南中,您将学习如何使用Clover来提高代码覆盖率

塞尔吉奥·德尔阿莫

365bet地区版本 4.0.1

365bet地区培训

365bet地区培训由创建并积极维护365bet地区框架的人们开发和交付

入门

Atlassian Clover为Java和Groovy开发人员提供了可靠的代码覆盖率分析来源

自四月以来三叶草是开源的.

365bet地区365bet地区使用Gradle Build System来构建相关任务,例如编译运行测试和生成项目的二进制发行版

365bet地区在本指南中,我们将安装Gradle插件以获取365bet地区应用程序的代码覆盖率

您将需要什么

要完成本指南,您将需要以下内容

  • 花些时间在你手上

  • 体面的文本编辑器或IDE

  • 安装了JDK或更高版本JAVA首页适当配置

如何完成指南

要开始,请执行以下操作

要么

365bet地区指南存储库包含两个文件夹

  • 初始初始项目通常是一个简单的365bet地区应用程序,其中包含一些其他代码,可以帮助您快速入门

  • 完成一个完整的示例它是按照指南中介绍的步骤进行操作并将这些更改应用于文档的结果。初始

要完成指南,请转到初始

  • 光盘进入grails指南grails代码覆盖率初始

您可以直接前往如果你光盘进入grails指南grails代码覆盖范围完整

编写申请

Gradle Clover插件

我们将使用Gradle Clover插件使用三叶草生成代码覆盖率报告

我们将创建一个gradle文件以将Clover配置保留在一个地方

三叶草三叶草
buildscript库jcenter依赖类路径'com bmuschko gradle clover插件'应用插入: '与bmuschko三叶草'三叶草'org openclover三叶草'三叶草牌照文件createTempFile'三叶草', '执照'绝对路径(1)排除'应用程序', (2)
                'BootStrap常规',
                'UrlMappings常规',
                '365bet地区365bet地区Plugin groovy',
                '模拟Groovy'测试包括'规范'] (3)报告(4)html真正XML文件真正
    }
}
1 尽管Clover是开源的,但您需要创建一个虚拟许可证文件
2 我们不希望某些文件污染我们的代码覆盖率报告
3 我们希望将我们的Spock规范作为测试文件包括在内
4 我们想要XML和HTML两种格式的报告

我们将从ROOT引用此文件建立gradle

建立gradle
buildscript存储库mavenLocal maven url"https repo grails org grails核心"依赖类路径"org grails grails gradle插件$grails版本"类路径"com bertramlabs插件资产管道gradle"类路径"org grails插件休眠"类路径'com bmuschko gradle clover插件' (1)"0.1""365bet地区代码覆盖率"应用插入:'时髦'应用插入:"日食"应用插入:"理念"应用插入:"战争"应用插入:"组织grails grails网站"应用插入:"组织grails grails gsp"应用插入:"与bertramlabs资产管道"应用: "${项目projectDir}三叶草三叶草"  (2)仓库Maven URL"https repo grails org grails核心"配置开发仅运行时类路径从开发扩展自依赖开发"org springframework boot spring boot devtools"编译"org springframework boot spring boot starter logging"编译"org springframework boot spring boot autoconfigure"编译"组织grails grails核心"编译"org springframework引导弹簧引导启动器执行器"编译"org springframework boot spring boot starter tomcat"编译"组织grails grails网络启动"编译"组织grails grails日志记录"编译"org grails grails插件其余"编译"org grails grails插件数据绑定"编译"org grails grails插件,我"编译"org grails grails插件服务"编译"org grails grails插件URL映射"编译"org grails grails插件拦截器"编译"org grails插件缓存"编译"org grails插件异步"编译"org grails插件脚手架"编译"org grails插件事件"编译"org grails插件休眠"编译"组织休眠休眠核心决赛"编译"org grails插件gsp"编译"显微注射显微注射"安慰"org grails grails控制台"轮廓"org grails个人资料网站"运行"org glassfish网站el impl b"运行"与h数据库h"运行"组织apache tomcat tomcat jdbc"运行"com bertramlabs插件资产流水线"测试编译"org grails grails gorm测试支持"测试编译"org grails grails网站测试支持"bootRun jvmArgs'始终启用Dspring输出和ANSI输出',
            'noverify',
            'XX TieredStopAtLevel',
            'Xmx m'sourceResources sourceSets主要资产minifyJs真正minifyCss真正
}
1 将插件添加为构建脚本依赖项
2 使用三叶草配置应用构建文件

编码与测试

我们有一个领域类

365bet地区应用程序域演示Person groovy
演示  {
    那么布尔值活性

我们还有一项服务,该服务针对先前的域类封装了GORM查询

grails应用服务演示PersonGormService groovy
演示进口 grails gorm services服务
进口 grails gorm交易ReadOnly

服务接口PersonGormService只读
    清单findAllByActive

我们有一个Groovy POJO

src main groovy demo名称groovy
演示进口 常规转换规范
进口 常规转换CompileStatic

典范
静态编译
 name {
    名字

此应用程序的业务逻辑在名称服务猜测名字每个实例

grails应用程序服务演示NameService groovy
演示进口 常规转换CompileStatic

静态编译
 名称服务PersonGormService personGormService清单<namefindAllPersonNames personGormService findAllByActive收集Person人名WithFullName人名namenameWithFullName全名如果全名包含'') ) {
            返回nameWithSeparator全名'')
        }
        返回nameWithSeparator全名' ')

    }

    namenameWithSeparator全名分隔器名字[]arr全名拆分分隔符如果长度0名字"${rr0]}${分隔器}"toString整型从firstName长度开始lastName全名从全名长度开始的子字符串其他名字全名 name(名字名饰姓氏修饰

我们已经为此服务编写了测试

src测试groovy演示NameServiceSpec groovy
演示进口 免费测试服务ServiceUnitTest
进口 spock lang规格

 名称服务规格 延伸规格实施ServiceUnitTest {

    定义 "findAllPersonNames区分包含子字符串del的名称"() {

        给定服务人员存根PersonGormService findAllByActive新人员名称塞尔吉奥·德尔阿莫活跃真实(1)
                    那么: '格雷姆·罗彻(Graeme Rocher)', 活性: 真正),]
        }

        什么时候:
        清单<name名称服务findAllPersonNames然后每个命名name那么断言 [
                     name(名字: '塞尔吉奥·德尔', : 'a默'),
                     name(名字: '格莱美', : '摇滚乐'包含名称
1 取消注释该行以增加代码覆盖率

运行应用程序

要生成代码覆盖率报告,请使用gradlew cloverGenerateReport命令将在下面生成报告建立报表三叶草html索引html

浏览您的报告并提高项目覆盖率

报告

您需要365bet地区帮助吗

OCI赞助了本指南的创建OCI提供了几种365bet地区服务:

免费咨询

OCI 365bet地区团队包括365bet地区联合创始人Jeff Scott Brown和Graeme Rocher检查我们的365bet地区课程并向发展和维护365bet地区的工程师学习

Grails OCI团队