从代码覆盖率JMockit中排除多个包

时间:2013-11-13 17:33:33

标签: regex code-coverage jmockit

我正在使用jmockit进行代码覆盖测试。 我需要从代码覆盖中排除一些类。 用于在eclipse中排除类的VM参数是

-Djmockit-coverage-excludes=com\.jmockit\.beans\..+

我提到了this文档。 我现在需要的是,我需要排除多个类。 我如何组合包并将其作为参数传递 说-Djmockit-coverage-excludes=packageA+packageB从代码覆盖范围中排除这两个包。

2 个答案:

答案 0 :(得分:0)

您可以使用|字符分隔多个正则表达式,每个正则表达式用于特定包或一组包。例如:

-Djmockit-coverage-excludes=packageA\..+|packageB\..+|com\.mydomain\..+

答案 1 :(得分:0)

Rogério的上述答案在Windows中不起作用(在JMockit btw上做得很好)作为|角色是一个特殊的角色。逃避|你需要添加^。

e.g。

-Djmockit-coverage-excludes=packageA\..+^|packageB\..+^|com\.mydomain\..+

这使得这个解决方案不是跨平台的。对我们来说,这是一个真正的问题,因为开发是在Windows上,构建服务器是linux。

coverage插件是否可以从pom中的插件读取配置属性,而不是添加这些命令行参数,如果是,那么标记是什么?

编辑: 我已经更新了我的POM以这种方式处理这个问题:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
    <argLine>-XX:MaxPermSize=256m -XX:-UseSplitVerifier ${jmockit-coverage-options}</argLine>
</configuration>
</plugin>

...

<profiles>
    <profile>
        <id>os-windows</id>
        <activation>
            <os>
                <family>windows</family>
            </os>
        </activation>
        <properties>
            <!-- See: http://code.google.com/p/jmockit/issues/detail?id=322 -->
            <!-- See: http://code.google.com/p/jmockit/issues/detail?id=323 -->
            <jmockit-coverage-options>-Djmockit-coverage-outputDir=target/coverage-report -Djmockit-coverage-classes=PackageC\..+ -Djmockit-coverage-excludes=packageA\..+^|packageB\..+^|com\.mydomain\..+</jmockit-coverage-options>
        </properties>
    </profile>

    <profile>
        <id>os-unix</id>
        <activation>
            <os>
                <family>unix</family>
            </os>
        </activation>
        <properties>
            <!-- See: http://code.google.com/p/jmockit/issues/detail?id=322 -->
            <jmockit-coverage-options>-Djmockit-coverage-outputDir=target/coverage-report -Djmockit-coverage-classes=PackageC\..+ -Djmockit-coverage-excludes=packageA\..+|packageB\..+|com\.mydomain\..+</jmockit-coverage-options>
        </properties>
    </profile>