单元测试失败时,Build不会被标记为不稳定

时间:2009-09-16 08:51:10

标签: xcode hudson

我在我的hudson服务器中添加了一个新作业,该服务器使用makefile构建项目。

执行shell命令:

#!/bin/bash
cd $JOB_NAME
make

我的makefile看起来像这样

SDK_31 = iphonesimulator3.1
TARGET_DEV = myProject
TARGET_TEST = unitTest

all: debug
debug:
        xcodebuild -sdk ${SDK_31} -target "${TARGET_DEV}" -configuration Debug
        xcodebuild -sdk ${SDK_31} -target "${TARGET_TEST}" -configuration Debug

clean:
        xcodebuild -alltargets clean
        rm -rf build

但是当hudson构建项目时,一些单元测试会失败,但构建被标记为成功。

我应该怎么做才能有一个“不稳定的项目”?

致以最诚挚的问候,

2 个答案:

答案 0 :(得分:2)

您应该通过启用“发布Junit测试结果报告”构建后操作来配置Hudson以记录单元测试结果。

post-build actions http://img141.imageshack.us/img141/5136/hudsonjunit.png


更新:如果您无法获得JUnit XML输出,您应该能够使用Text-finder plugin来更改构建状态:

  

此插件允许您搜索指定文件中的关键字,并使用该插件将构建标记为成功或失败。

答案 1 :(得分:1)

我发现Christian Hedin使用这个方便的ruby脚本将OCUnit测试的输出(Xcode使用的格式)转换为JUnit xml文件(Hudson使用的格式)。

你可以在github上获取脚本: http://github.com/ciryon/OCUnit2JUnit

以及如何使用它的解释,这是他的博客文章: http://blog.jayway.com/2010/01/31/continuos-integration-for-xcode-projects/

基本上,你用这样的命令将xcodebuild传递到ocunit2junit.rb:

/usr/bin/xcodebuild -target UnitTests | /usr/local/bin/ocunit2junit.rb

并将xml文件放入它在项目文件夹根目录下创建的测试报告文件夹中。然后告诉Hudson将test-reports/*.xml工件复制为JUnit结果并进行设置。

此设置将允许Hudson正确识别单元测试是否已通过或失败,并正确标记构建的稳定性。

我已经使用它一个月了,效果很好。设置非常简单。