关闭

Junit单元测试使用log4j输出日志

10166人阅读 评论(3) 收藏 举报
分类:

Junit+spring+log4j整合之所以麻烦,是因为spring与log4j的整合,是放在web.xml里的,随tomcat启动后,spring才会加载log4j,而用junit测试是不需要tomcat启动的,所以Junit与log4j的整合才比较费劲。Junit使用spring时,若spring没加载到log4j就会报以下警告:

log4j:WARN No appenders 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.

解决办法1:最简单粗暴的方法

将log4j放到特定目录下,指定加载配置文件位置。Junit代码如下:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:com/config/springConfig.xml" })
@Transactional
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
public class TestHibernate {
    ...
}

这种方法,虽然直接简单,但很多项目中喜欢把所有配置文件进行统一管理并分类汇总到不同的文件夹下,例如:将所有配置文件放到com.config包下。那么测试的时候就还得手动将log4j.properties或log4j.xml移动到根目录下,但这么做,项目简单还行,如果是大型项目,需要加载很多配置文件时,还是恨麻烦也容易出问题的。因此并不推荐。

解决办法2:推荐方法

新建JUnit4ClassRunner类:

public class JUnit4ClassRunner extends SpringJUnit4ClassRunner {
    static {
      try {
        Log4jConfigurer.initLogging("classpath:com/config/log4j.properties");
      } catch (FileNotFoundException ex) {
        System.err.println("Cannot Initialize log4j");
      }
    }
    public JUnit4ClassRunner(Class<?> clazz) throws InitializationError {
      super(clazz);
    }
  }

引用此类:

@RunWith(JUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:com/config/springConfig.xml")
@Transactional
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
public class TestHibernate {
    ...
}

这样,在启动Junit测试时,spring就会加载log4j了。而且保持了灵活性。

PS:Junit加载spring的runner(SpringJUnit4ClassRunner)要优先于spring加载log4j,因此采用普通方法,无法实现spring先加载log4j后被Junit加载。所以我们需要新建JUnit4ClassRunner类,修改SpringJUnit4ClassRunner加载log4j的策略。这样加载log4j就会优先于加载spring了。

1
0
查看评论

Junit测试用例配置Log4j

用Junit测试非常方便,但有时我们想要看日志来方便排除,使用spring+log4j时,用Junit测试看日志很多人都不太会,即如何将Junit与log4j进行整合。 我也是研究了半天,才终于找到了方法,特此拿来与大家分享下。 Junit+spring+log4j整合之所以麻烦,是因为spri...
  • wangpeng047
  • wangpeng047
  • 2014-03-31 15:03
  • 31196

Junit与log4j的整合问题

Junit+spring+log4j整合之所以麻烦,是因为spring与log4j的整合,是放在web.xml里的,随tomcat启动后,spring才会加载log4j,而用junit测试是不需要tomcat启动的,所以Junit与log4j的整合才比较费劲。Junit使用spring时,若spri...
  • zzhao114
  • zzhao114
  • 2017-02-13 13:56
  • 523

Maven中运行Junit测试Log4j的配置

大多参考至: http://stackoverflow.com/questions/13438871/log4j2-configuring 出现如图的情况错误,如下的配置即可: In Maven you normally have this logging configurat...
  • u013131203
  • u013131203
  • 2016-06-10 22:46
  • 1476

Java log4j、junit4、应用

导入 log4j、junit4 、封建logs目录 log4j 配置文件#debug 调试,用来调试程序的bug。 #根日志器。其他的日志器都是根日志器的子日志器,会继承根日志器的目的地,以及级别等 #只要大于等于INFO级别的日志就可以输出。c1和A1,f1是说明目的地(Appender...
  • u012404490
  • u012404490
  • 2016-09-13 17:14
  • 487

log4j用例

依赖的jar包 log4j-1.2.17.jar slf4j-api-1.7.5.jar slf4j-log4j12-1.7.5.jar 配置文件 log4j.properties 代码样例 import java.io.File; import org.apache.log4j.L...
  • OliverChrist
  • OliverChrist
  • 2018-01-15 19:59
  • 16

spring-junit中使用 log4j或者logback 打印spring日志

package com.gooddeep.elasticsearch; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.collections.m...
  • u013378306
  • u013378306
  • 2016-08-03 13:05
  • 15540

Junit的使用入门,判断控制台输出是否与预期相同

Junit是一个强大的测试工具,可以用来写测试用例,相当于白盒测试,与maven搭配使用,可以使协同开发提高效率,测试人员将测试用例及单元测试编写在test包中,进行测试。         在我新建的maven项目中,main包中有两个类,分别是含...
  • April0012
  • April0012
  • 2015-04-27 10:53
  • 2703

Junit测试用例配置Log4j

转自:http://blog.csdn.net/wangpeng047/article/details/20375413
  • gjf281
  • gjf281
  • 2014-12-02 14:07
  • 965

搭建日志环境和Junit环境

1. Hibernate中搭建日志环境并配置显示DDL语句 Hibernate自带的是slf4j,一开始用的是slf-nodep,将log4j.jar替换掉slf-nodep,为了让slf-api.jar的接口对应上log4j.jar,需要增加slf-log4j.jar包才可以。 在下载好的Hi...
  • u014206695
  • u014206695
  • 2016-12-21 11:05
  • 350

junit进行测试加载多个spring配置文件

配置方式如下: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "classpath*:/applicationContext_realm.xml", ...
  • sihai12345
  • sihai12345
  • 2018-01-08 19:07
  • 92
    个人资料
    • 访问:9406961次
    • 积分:78959
    • 等级:
    • 排名:第21名
    • 原创:264篇
    • 转载:2910篇
    • 译文:3篇
    • 评论:805条
    文章分类
    最新评论