Maven 不输出 junit CHECKSTYLE 报告

Posted

技术标签:

【中文标题】Maven 不输出 junit CHECKSTYLE 报告【英文标题】:Maven not outputting junit CHECKSTYLE report 【发布时间】:2016-10-15 23:16:17 【问题描述】:

在默认配置之后,maven 只为源类输出Checkstyle report,而不是 Junit 测试类。请注意,我不是在寻找万无一失的测试报告输出。

来自 pom.xml:

<reporting>
 <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-checkstyle-plugin</artifactId>
      <version>2.17</version>
      <reportSets>
        <reportSet>
          <reports>
            <report>checkstyle</report>
          </reports>
        </reportSet>
      </reportSets>
      <configuration>
        <configLocation>src/main/resources/apcheckstyle.xml</configLocation>
        <module name="LineLength">
          <property name="max" value="120"/>
        </module>
      </configuration>
    </plugin>
</plugins>

我将 junit 的依赖范围从 test 更改为 compile

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>compile</scope>
</dependency>

Maven 被配置为使用 mvn 站点插件生成 checkstyle 报告。 我尝试将用户属性 includeTestResources 添加为 true,但这没有帮助。文档说明默认值为true,所以我把它拿出来了。

这是检查样式生成期间的 maven 输出。

来自 javadocs:

正在生成 C:\Users\Administrator\Projects\lht657aws\target\site\testapidocs\help-doc.html...

checkstyle 插件运行:

[INFO] 生成“Checkstyle”报告 --- maven-checkstyle-plugin:2.17

[INFO] Checkstyle 6.11.2 使用 src/main/resources/apcheckstyle.xml 规则集报告了 210 个错误。

正在关注问题-? src 下的所有 java 都被处理,只是被测试的 java 被跳过:

[警告] 无法找到要链接到的源外部参照 - 已禁用

checkstyle 后,maven 项目信息报告开始

[INFO] 生成“依赖项”报告 --- maven-project-info-reports-plugin:2.9

【问题讨论】:

编辑澄清这实际上是关于 checkstyle 报告并添加了来自 Maven 的输出。 【参考方案1】:

将 Maven Surefire Report 插件添加到您的 pom XML 中

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-report-plugin</artifactId>
    <version>2.19.1</version>
    <configuration>
      <outputDirectory>path/to/the/report</outputDirectory>
    </configuration>
</plugin>

并将目标 surefire-report:report 添加到您的 maven 调用中

在此处查看文档:Maven Surefire Report Plugin

编辑

我误解了这个问题,尝试将此部分与所需配置添加到您的 pom 中。

<reporting>
  <plugins>
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>2.17</version>
      <reportSets>
        <reportSet>
          <id>main_checks</id>
          <reports>
            <report>checkstyle</report>
          </reports>
          <configuration>
            <sourceDirectory>$project.build.sourceDirectory</sourceDirectory>
            <includeTestSourceDirectory>false</includeTestSourceDirectory>
            <configLocation>config/maven_checks.xml</configLocation>
            <outputDirectory>$project.reporting.outputDirectory/main-checks/</outputDirectory>
          </configuration>
        </reportSet>
        <reportSet>
          <id>test_checks</id>
          <reports>
            <report>checkstyle</report>
          </reports>
          <configuration>
            <sourceDirectory></sourceDirectory>
            <testSourceDirectory>$project.build.testSourceDirectory</testSourceDirectory>
            <includeTestSourceDirectory>true</includeTestSourceDirectory>
            <configLocation>config/sun_checks.xml</configLocation>
            <outputDirectory>$project.reporting.outputDirectory/test-checks/</outputDirectory>
          </configuration>
        </reportSet>
      </reportSets>
    </plugin>
  </plugins>
</reporting>

【讨论】:

感谢 Jorge,我发现这是一个普遍存在的问题,因为它让我很难找到 my 问题的答案。我对Checkstyle report, 感兴趣,而不是测试报告.. 对不起,我误解了你的问题。查看我的编辑并尝试一下。 谢谢!我尝试过这个。这让我完全走上了正轨。问题是我的configuration 节点位于plugin 级别,而不是reportSet 级别。请注意,我无法让 2.6 使用我的自定义配置文件,似乎有一个 bug 重铺。所以我在2.17。请更新您的答案,或者我可以输入答案。 好的!已编辑。很高兴你能解决你的问题。我离开了这个旧版本,因为它来自我的一个旧答案。忘记更新了。【参考方案2】:

Maven 确保插件用于生成测试报告。请参阅此处的其他文档:

http://maven.apache.org/surefire/maven-surefire-report-plugin/

您需要在您的 POM.xml 中包含此插件并提供创建报告的路径(通常是项目中的目录)。在进行构建时,请确保您包含此目标。

【讨论】:

我对@9​​87654322@ 感兴趣,而不是测试报告。 Checkstyle 报告评估测试类中 java 的语法。 哦!上面约翰提出的我的坏..解决方案完全正确,我的 :+1 。

以上是关于Maven 不输出 junit CHECKSTYLE 报告的主要内容,如果未能解决你的问题,请参考以下文章

Maven 3 和 JUnit 4 编译问题:包 org.junit 不存在

Maven学习三 使用junit测试maven project

并行 JUnit 测试不执行关闭挂钩

按《maven实战》提示 程序包org.junit不存在

在Maven项目中运行JUnit 5测试用例

maven junit scope test坑