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

标签 java unit-testing kotlin java.util.logging

我正在尝试使用 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

最佳答案

您必须持有strong reference to your logger这比方法局部范围更宽。如果您不这样做,您的级别设置可能会由于记录器的垃圾收集而丢失。

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

如果您想断言某些输出值,那么您需要安装 filter or handler查找特定的LogRecord

关于测试类中的 java.util.logging.Logger,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46455666/

相关文章:

Java 不区分大小写的本地化排序

kotlin - 使用额外属性的 build.gradle.kts 脚本中的错误

java - OkHttp3无法在Android上开始握手

Java 运行异步进程

java - 读取目录中的所有属性文件

c# - 使用接口(interface)对后台线程进行单元测试

python - 如何对浮点输出执行单元测试? - Python

android - 有 Flow 版本的 flatMapIterable 吗?

java - Java中形式参数和显式参数相同吗?

c# - 测试单例