2011-02-28 108 views
4

我已经配置在我的POM的Cobertura代码覆盖:的Maven的Cobertura:单元测试失败,但成功打造

<plugin> 
<groupId>org.codehaus.mojo</groupId> 
<artifactId>cobertura-maven-plugin</artifactId> 
<version>2.4</version> 
<configuration> 
    <instrumentation> 
     <excludes> 
      <exclude>**/*Exception.class</exclude> 
     </excludes> 
    </instrumentation> 
    <formats> 
     <format>xml</format> 
     <format>html</format> 
    </formats> 
</configuration> 
</plugin> 

,并按照命令启动测试:

mvn clean cobertura:cobertura 

但是,如果单元测试的一个Cobertura只会记录这些信息,并不会标记构建失败。

Tests run: 287, Failures: 1, Errors: 1, Skipped: 0 

Flushing results... 
Flushing results done 
Cobertura: Loaded information on 139 classes. 
Cobertura: Saved information on 139 classes. 
[ERROR] There are test failures. 

................................. 

[INFO] BUILD SUCCESS 

如何配置Cobertura标记生成单元测试失败失败?

在此先感谢。

+0

你确定你不是在一次扫描中做得太多吗?通常的构建在单元测试失败时停止,但覆盖构建适用于不同的目的。我不知道你的具体情况,但你为什么要让Cobertura通过测试而不是运行所有测试,并告诉你你有什么报道? – 2013-08-15 09:15:10

回答

0

您可以将haltOnFailure属性设置为true。

<configuration> 
    ... 
    <check> 
     ... 
     <haltOnFailure>true</haltOnFailure> 
     ... 
    </check> 
</configuration> 
+0

谢谢你的回答,但这个配置属性并没有帮助我:( – 2011-02-28 17:00:39

+0

它看起来像这个选项启用覆盖检查,例如,然后覆盖项目是低 – 2011-02-28 17:03:38

3

如果从运行的Cobertura插件你不能强迫行家如果测试没有成功通过失败构建一个特殊的目标。插件目标将成功。

您可以将cobertura运行绑定到生命周期阶段(例如测试)。这将使cobertura的目标在这个阶段运行(mvn clean test),并且如果这个阶段失败,则失败。

 <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>cobertura-maven-plugin</artifactId> 
      <version>2.4</version> 
      <configuration> 
       <formats> 
        <format>xml</format> 
        <format>html</format> 
       </formats> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>test</phase> 
        <goals> 
         <goal>cobertura</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

该解决方案的缺点是cobertura目标将运行到每个test阶段。

+0

谢谢你的答案。运行单元测试两次,如果我使用选项_-Dmaven.test.skip = true_,maven不会运行任何测试,请您澄清一下如何解决它?我发现以下cobertura错误[MCOBERTURA-83](http ://jira.codehaus.org/browse/MCOBERTURA-83)。是否有其他解决方法修复测试双启动而无源修补? – 2011-03-01 08:01:49

+0

我不知道这是否可以修复。在这种情况下,有一个“正常”测试运行(surefire插件)和一个“入侵测试运行”(cobertura)。我怀疑这可以“合并”为一次运行。 – FrVaBe 2011-03-01 08:37:14

+0

这是非常伤心:( – 2011-03-01 13:14:16