Sør*_*vig 5 grails gradle jacoco gradle-plugin grails-3.1
我有一个包含大量控制器的grails 3.1.x项目,我使用spock来测试控制器。
我为控制器使用命令模式,因此每个操作都需要一个命令对象。
这样的控制器的一个例子:
class PlaygroundController {
public Object pg(PgCO pgco) {
String s = null
if (pgco.one) {
s = pgco.one
}
if (pgco.two) {
s = pgco.two
}
render view: 'pg', model: [resultat: s]
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个简单的spock测试案例:
void "pg"() {
given:
PgCO pgCO = new PgCO()
pgCO.one = 'TEST'
when:
controller.pg(pgCO)
then:
view == '/playground/pg'
model
model.resultat == 'TEST'
}
Run Code Online (Sandbox Code Playgroud)
该测试运行良好,但是当我运行jacocoTestReport时,它表明我的覆盖率远低于50%,因为我只覆盖一个分支,所以没有完全覆盖是可以的。
但是报告中包含我没有源代码的方法上的“缺少的指令”负载。特别是有一个影子pg()方法不带任何参数。Grails会注入此方法,但是由于我使用同一方法的命令对象版本,因此我从不会从测试中调用该方法。这种方法还有来自grails控制器框架的许多其他方法。
是否没有告诉jacoco仅需要检查覆盖范围的“源代码”?
我尝试指定确切的源目录,但这无济于事
这是覆盖率报告的图像: 覆盖率报告
我有一个日常的简单项目,仅启用jacoco插件并运行最新的jacoco:
jacoco {
toolVersion = "0.7.5.201505241946"
}
Run Code Online (Sandbox Code Playgroud)
还有其他解决方案吗?
| 归档时间: |
|
| 查看次数: |
413 次 |
| 最近记录: |