今天把CruiseControl和ant集成起来,但是CruiseControl显示没有进行任何JUnit Test,所以没有Test Report。然而,喵喵明明有test的丫???想想自己确实没有做任何配置,但是既然这么说,自然就是可配置的,于是,喵喵再次研究了一下CruiseControl的文档,终于找出了解决方案。
前面说过,cruisecontrol下面子元素<project>有七个主要子元素,分别是:
- <listeners>
- <bootstrappers>
- <compound>
- <modificationset>
- <schedule>
- <log>
- <publishers>
而其中的<log>元素就是用来设定cruisecontrol产生的log文件存储位置的,而它又有三个子元素,分别是:
- <merge> Merges log file together.
- <gzip> GZips old log files
- <delete> Deletes old log files.
而这个<merge>元素就可以用来在build结束之后把指定的xml文件merge到cruisecontrol的log中,而最普遍的就是ant中<junit>task生成的test results。
配置文件如下:
<log dir="${cruisecontrol.buildpath}/logs/${project.name}">
<merge file="" dir="${test.result}" removeproperties="true" pattern="*.xml"/>
</log>
解释一下,file和dir属性必须设定其中一个,如果设定了file,就不需要设定pattern;removeproperties用于指定是否需要在merge的时候remove properties,默认为true;pattern用于指定通配符,默认为*.xml
当然,ant的<junit>task需要指定<formatter type="xml"/>
OK,就这么多了,搞定~~