0

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

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

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

4

2 回答 2

0

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

-Djmockit-coverage-excludes=packageA\..+|packageB\..+|com\.mydomain\..+
于 2013-11-14T10:46:59.253 回答
0

Rogério 的上述答案在 Windows 中不起作用(顺便说一句,在 JMockit 上做得很好)作为 | 字符是一个特殊字符。逃离| 你需要添加^。

例如

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

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

除了添加这些命令行参数之外,覆盖插件是否可以从 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>
于 2013-11-15T11:31:29.217 回答