持续集成:单元测试使用“mvn test”运行,但在JaCoCo运行时失败

时间:2014-06-03 10:50:59

标签: maven jenkins junit4 sonarqube jacoco

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

我们的CI系统(带有Maven和Sonar插件的Jenkins)在签到时运行Maven测试版本(工作正常)并使用Sonar整合运行夜间构建(运行正常,直到上周)。 现在每晚构建编译并运行测试(全绿色)并调用Sonar插件。 静态分析后,声纳启动JaCoCo测量直到测试覆盖范围;当JaCoco运行单元测试(再次)时,很多都会按预期运行,但是第一次测试会抛出一个异常(在常规运行中没有引发)关于创建已经存在的对象,以及稍后的一些测试尝试回滚事务(通常不回滚)时进程冻结。

没有更新任何组件,并且在失败的测试周围没有进行任何可疑的代码更改。

有人知道,JaCoCo如何区别对待单元测试以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

首先阅读我的FAQ

你在说:

  

现在每晚构建编译并运行测试(全部为绿色)并调用   Sonar插件......当JaCoco运行单元测试时(再次)

声纳插件有什么作用?主要目的是收集测试报告,包括jacoco并将其发送给声纳。它可以为您运行测试并立即收集数据,但这不是您所期望的。如果您只想将测试覆盖率发送到声纳服务器,请使用sonar.dynamicAnalysis=reuseReports参数运行您的声纳插件。它不会再次运行你的测试。

你的测试在没有声纳插件的情况下运行良好,然后声纳插件打破了它们?如果你的测试需要你没有传递给声纳插件的额外java参数(-Dcom.stackoverflow=somevalue),或者你可能正在使用特殊的maven配置文件(-Psomeprofile)并且不需要'在调用声纳插件时这样做

顺便说一下:

  
    

当JaCoco运行单元测试时(再次)

  

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