java – 运行所有maven测试时无法控制log4j

在src / test / resources / log4j.properties中,我已将log4j配置为不记录任何内容.

当我运行单个测试,即mvn clean test -Dtest = MyTestClass时,会注意到这个log4j属性.但是,当我运行所有测试,即mvn clean test时,将忽略此日志记录conf.怎么会这样?!!

我想我会发疯但希望有一个合乎逻辑的解释:-)

任何帮助都非常感谢.

$ mvn -version
Apache Maven 3.3.9
Maven home: /usr/share/maven
Java version: 1.8.0_60, vendor: Oracle Corporation
Java home: /usr/lib/jvm/jdk-8-oracle-x64/jre
Default locale: en_GB, platform encoding: UTF-8
OS name: "linux", version: "4.6.0-1-amd64", arch: "amd64", family: "unix"

确定的火灾版本是2.19.1:

[INFO] --- maven-surefire-plugin:2.19.1:test (default-test) @ common-util ---

src / test / resources / log4j.properties:

log4j.rootLogger=OFF

与资源相关的POM片段:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-resources-plugin</artifactId>
      <version>2.5</version>
      <configuration>
        <encoding>ISO-8859-1</encoding>
      </configuration>
    </plugin>

最佳答案 src / test / java下的52个测试类之一在其@Before方法中有以下几行:

   import org.apache.log4j.BasicConfigurator;

   @Before
   public void setUp() {
     BasicConfigurator.resetConfiguration();
     BasicConfigurator.configure();
   }

出于某种原因,就我所知,一定是个bug,这些对log4j的调用也会影响所有其他的junit类.删除这些行使得mvn test获得了与运行mvn test -Dtest = MyTestClass相同的日志记录行为,即在src / test / resources / log4j.properties中定义的内容.

点赞