airlink
logging找不到配置
*问题起源*: 在执行junit测试的时候,log失效,CUT(Class Under Test被测试类)没有按照log4j.properties
的指示进行logging。
*问题发生的环境*:
Eclipse 3.1.1
Maven2.x,
Maven插件 Maven 2.0 integration 0.0.9
使用标准maven web app layout: "-DarchetypeArtifactId=maven-archetype-webapp"
*分析过程*:
1. 开始以为写错了logging的配置,查了commons-logging的资料,并无错误,log4j.properties将作为缺省配置。
2. 由此怀疑log4j.properties不在测试运行时的classpath里。在CUT里写main执行方法,包括一句非常简单的
logger.debug("debugging!"); 运行主程序发现logging一切很正常。很显然,在eclipse环境下直接运行和junit的test
runner 的classpath是不一致的。
3. 打开Eclipse的run选项, RunàRun…,选择JUnit/${CUT}Test/Classpath, 察看junit的运行参数
classpath,发现其中并没有包括maven配置中以及eclipse项目中的classpath,如下图:
4. 问题就出在这里了。 在此处添加log4j.propertie所在的folder,例如
"\${projectName}\src\main\resource\",如下图所示:
运行testrunner,logging正常了。
*后续工作*:
上述的修改只能算是一个workaround,每一次运行都必须配置相应的classpath,很不方便。有没有其他更好的办法?
查google "classpath testrunner junit eclipse",有人已经报告了这个问题(不,这是另外一个cross
project引用的问题)
**
logging找不到配置
*问题起源*: 在执行junit测试的时候,log失效,CUT(Class Under Test被测试类)没有按照log4j.properties
的指示进行logging。
*问题发生的环境*:
Eclipse 3.1.1
Maven2.x,
Maven插件 Maven 2.0 integration 0.0.9
使用标准maven web app layout: "-DarchetypeArtifactId=maven-archetype-webapp"
*分析过程*:
1. 开始以为写错了logging的配置,查了commons-logging的资料,并无错误,log4j.properties将作为缺省配置。
2. 由此怀疑log4j.properties不在测试运行时的classpath里。在CUT里写main执行方法,包括一句非常简单的
logger.debug("debugging!"); 运行主程序发现logging一切很正常。很显然,在eclipse环境下直接运行和junit的test
runner 的classpath是不一致的。
3. 打开Eclipse的run选项, RunàRun…,选择JUnit/${CUT}Test/Classpath, 察看junit的运行参数
classpath,发现其中并没有包括maven配置中以及eclipse项目中的classpath,如下图:
4. 问题就出在这里了。 在此处添加log4j.propertie所在的folder,例如
"\${projectName}\src\main\resource\",如下图所示:
运行testrunner,logging正常了。
*后续工作*:
上述的修改只能算是一个workaround,每一次运行都必须配置相应的classpath,很不方便。有没有其他更好的办法?
查google "classpath testrunner junit eclipse",有人已经报告了这个问题(不,这是另外一个cross
project引用的问题)
**