在 JUnit 测试类中,我应该在哪里配置 log4j?

2022-08-31 11:24:42

看看我写的最后一个JUnit测试用例,我在类构造函数中调用了log4j的BasicConfigurator.configure()方法。这对于从Eclipse的“运行为JUnit测试用例”命令中只运行单个类工作得很好。但我意识到这是不正确的:我很确定我们的主测试套件从一个进程运行所有这些类,因此log4j配置应该在更高的地方进行。

但是我仍然需要自己运行一个测试用例,在这种情况下,我希望配置log4j。我应该将配置调用放在何处,以便在测试用例独立运行时运行,而不是在测试用例作为更大套件的一部分运行时运行?


答案 1

我通常只是将log4j.xml文件放入src/test/resources中,然后让log4j自己找到它:不需要代码,默认的log4j初始化将拾取它。(无论如何,我通常都想将自己的记录器设置为“DEBUG”)


答案 2

该类确定在装入类时运行的静态块中使用哪个 log4j 配置。有三个选项适用于最终用户:LogManager

  1. 如果指定为 false,则根本不会配置 log4j。log4j.defaultInitOverride
  2. 自行手动指定配置文件的路径,并重写类路径搜索。您可以使用以下参数直接指定配置文件的位置:java

    -Dlog4j.configuration=<path to properties file>

    在测试运行程序配置中。

  3. 允许 log4j 在测试期间扫描类路径以查找 log4j 配置文件。(默认值)

另请参阅联机文档


推荐