我正在使用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[...]]
如何关闭这些?
答案 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为单元测试环境选择正确的配置文件。