Junit整合log4j

情到浓时终转凉″ 提交于 2020-01-31 23:58:39

今天遇到一个Spring Junit整合Log4j的小例子,控制台报了一个警告如下:

log4j:WARN No ppenders could be found for logger(org.springframework.test.context.junit4.SpringJUnit4ClassRunner).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

这里的意思就是使用Junit的没时候没有加载log4j.properties配置文件。

我用的是maven创建的工程,所以我就在test测试目录下写了一个Junit4ClassRunner类,并继承了SpringJunit4ClassRunner这个类,使用静态代码块优先加载log4j配置文件。

import org.apache.log4j.PropertyConfigurator;
        import org.junit.runners.model.InitializationError;
        import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
        import java.io.InputStream;

public class Junit4ClassRunner extends SpringJUnit4ClassRunner {
    static {
        InputStream log4j = Junit4ClassRunner.class.getResourceAsStream("/log4j.properties");
        PropertyConfigurator.configure(log4j);
    }

    public Junit4ClassRunner(Class<?> clazz) throws InitializationError {
        super(clazz);
    }
}

在测试代码中使用自己编写的Junit4ClassRunner类即可。

@RunWith(Junit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class Test_Spring {
    @Resource(name = "accountService")
    private AccountService service;
    @Test
    public void test_AccountService(){
        Account account = new Account();
        account.setId(12);
        service.saveAccount(account);
    }
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!