我遇到了一个非常奇怪的现象:

我们的CI系统(带Maven和Sonar Plugin的Jenkins)在Checkins上运行Maven测试版本(适用于罚款),并使用声纳Introvation(直到上周罚款)夜间建立。 现在夜间构建编译并运行测试(全绿色)并调用SONAR插件。 静态分析后,声纳启动Jacoco测量直到测试覆盖率;当jacoco运行单元测试时(再次),很多人按预期运行,但第一个测试抛出了一个例外(通常在通常的运行中抛出)关于创建已经存在的对象,并且在稍后的一些测试在尝试回滚事务时冻结(通常不会回滚)冻结。

没有组件已更新,并且在故障测试周围没有进行可疑代码更改。

有人知道,Jacoco如何对待单位测试,以及如何解决这个问题?

有帮助吗?

解决方案

首先读取我的常见问题

你在说:

现在夜间构建编译并运行测试(全绿色)并呼叫 声纳插件... jacoco运行单位测试时(再次)

声纳插件做什么?主要目的是收集测试报告,包括Jacoco并将其发送给声纳。它可以为您运行测试并立即收集数据,但这不是您认为的。如果您只想向Sonar Server发送测试覆盖范围,请使用sonar.dynamicAnalysis=reuseReports参数运行Sonar插件。它不会再运行测试。

您的测试在没有Sonar插件的情况下运行好,然后声纳插件打破它们?如果您的测试需要额外的Java参数(-Dcom.stackoverflow=somevalue),则可以使用您不传递给Sonar插件,或者您可以使用特殊的Maven Profile(-Psomeprofile),并且在调用Sonar插件时,请不要这样做 顺便说一句:

当jacoco运行单位测试时(再次)

jacoco无法运行测试。必须使用jacoco插件/代理启动您的单元测试,因此Jacoco将为您保存生成的*.exec文件。如果您看到此文件(最常见的目标目录中),则至少需要正确运行Jacoco。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top