如何关闭或禁止maven测试加载消息

时间:2013-08-06 04:42:39

标签: maven junit maven-3 junit4

我正在使用maven来运行我的测试。当测试运行时,输出到控制台的消息有很多无用(至少对我而言)。我的pom.xml有以下插件配置。

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-surefire-plugin</artifactId>
 <version>2.15</version>
 <configuration>
  <includes>
   <include>**/*Tests.java</include>
  </includes>
  <systemPropertyVariables>
  <log4j.configuration>file:${project.build.testOutputDirectory}/log4j.properties</log4j.configuration>
  </systemPropertyVariables>
 </configuration>
</plugin>

我跑的时候

mvn clean test

我看到一堆看起来如下的消息。

[parsing started RegularFileObject[...]]
[search path for source files: ...]
[search path for class files: ...]
[loading ZipFileIndexFileObject[...]]

如何关闭这些?

2 个答案:

答案 0 :(得分:3)

这是我如何解决它。问题是将编译设置为详细(例如java -verbose)。在我的pom.xml中,我做了

<verbose>true</verbose>

<verbose>false</verbose>

在我的pom.xml的build / plugins / plugin部分中,以下是我现在拥有的内容。

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-compiler-plugin</artifactId>
 <version>3.0</version>
 <configuration>
  <compilerArguments>
   <Xlint />
  </compilerArguments>
  <verbose>false</verbose>
  <source>${java.version}</source>
  <target>${java.version}</target>
  <showWarnings>true</showWarnings>
  </configuration>
</plugin>

所以那些“无用的”输出与surefire插件无关,而是与编译器插件的配置无关。

答案 1 :(得分:-1)

这取决于您的代码如何打印这些消息。如果使用System.out.println()打印它们,则可能无法抑制它们。如果使用LOG4J,您可以将以下 log4j.xml 放入 src / test / resources 或您的项目中:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd" >
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="devnull" class="org.apache.log4j.varia.NullAppender"/>
    <root>
        <priority value="info"/>
        <appender-ref ref="devnull"/>
    </root>
</log4j:configuration>

我在我的项目中使用这种方法并且它运行良好。但是,它可能取决于您的类路径中是否有任何其他log4j.xml(例如在src / main / resources中)。如果是 - 将需要额外的工作来确保log4j为单元测试环境选择正确的配置文件。