测试类中的java.util.logging.Logger

我想为我的类使用java.util.logging.Logger运行一个测试

import java.util.logging.Logger; public class TestLogging { final Logger logger = Logger.getLogger("Test"); public void f1() { logger.entering(getClass().getName(), "f1"); logger.info("f1"); logger.fine("f1"); logger.finer("f1"); logger.finest("f1"); logger.exiting(getClass().getName(), "f1"); } } 

所以我设置了一个测试类来检查记录器在测试类时是否产生输出

 import org.junit.Before import org.junit.Test import java.util.logging.Level import java.util.logging.Logger class TestLogger { @Before fun setupLogger() { Logger.getLogger("Test").level = Level.FINEST } @Test fun test() { TestLogging().f1() } } 

但是当我运行它时,我只看到下面的输出,就好像关卡设置为默认。

 TestLogger > test STANDARD_ERROR Sep 27, 2017 2:17:32 PM TestLogging f1 INFO: f1 

您必须持有比本地范围更广的记录器的强引用 。 如果你不这样做,你的关卡设置可能会因记录器的垃圾回收而丢失。

如果您想在控制台中看到输出,则还必须调整控制台处理程序的级别。

如果你想断言一些输出值,那么你需要安装一个过滤器或处理程序来查找特定的LogRecord