JUnit5属性文件在测试运行期间导致不需要的日志记录



我已经为使用JUnit5的项目设置了默认的测试生命周期为per_class。这是在junit-platform.properties文件中完成的。然而,由于应用了这个配置,我的测试运行之前有很多日志输出:

Dec 06, 2018 8:15:22 PM org.junit.platform.launcher.core.LauncherConfigurationParameters fromClasspathResource
INFO: Loading JUnit Platform configuration parameters from classpath resource [file:/Users/amb85/Projects/kotlin/katas/out/test/resources/junit-platform.properties].
Dec 06, 2018 8:15:22 PM org.junit.jupiter.engine.descriptor.TestInstanceLifecycleUtils getDefaultTestInstanceLifecycle
INFO: Using default test instance lifecycle mode 'PER_CLASS' set via the 'junit.jupiter.testinstance.lifecycle.default' configuration parameter.

我不想看到这些日志消息。如何禁用它们或将日志级别设置得更高?

在中找到答案:https://github.com/junit-team/junit5/issues/1774#issuecomment-463662553

总结:设置指向降低日志级别的logging.properties文件的"java.util.logging.config.file"系统属性。

tasks.withType(Test).configureEach {
useJUnitPlatform()
systemProperty 'java.util.logging.config.file', "${project.buildDir}/resources/test/logging-test.properties"
testLogging {
showStandardStreams = true
}
}

logging-test.properties:

handlers=java.util.logging.ConsoleHandler
.level=INFO
org.junit.platform.launcher.core.LauncherConfigurationParameters.level=WARNING
org.junit.jupiter.engine.config.EnumConfigurationParameterConverter.level=WARNING

我也遇到了同样的问题。一个可能的解决方案是拦截默认的JUnit5记录器(java.util.logging.LogManager(并丢弃该INFO日志。我还没有实施它,但你并不是唯一一个这样做的人。

以下是我研究的一些链接:

  • https://junit.org/junit5/docs/current/user-guide/#writing-测试测试实例生命周期更改默认

  • https://junit.org/junit5/docs/current/user-guide/#writing-测试测试接口和默认方法

最新更新