Back to photostream

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引用的问题)

**

118 views
0 faves
0 comments
Uploaded on November 12, 2006
Taken on November 12, 2006