我使用shell脚本
在Jenkins中调用我们的iOS gtest套件#!/bin/sh
pkill -a "iPhone Simulator"
ios-sim launch ${WORKSPACE}/source/apple/build/Debug-iphonesimulator/MyAppTest.app --args --gtest_output=xml:${WORKSPACE}/JUnitTestResultsIOS.xml
exit $?
这总是成功运行测试,当测试通过时,xml文件会按预期生成。但是,当测试失败时,不会生成任何xml文件,并且执行shell命令"执行shell命令"构建步骤终止但不会使作业失败。我回复了退出代码,即使测试失败,它也会返回0。
这对我来说更加困惑,因为我们在同一个作业中有一个基本相同的脚本,用于在我们的OSX版本上运行测试。这总是写入xml,并在测试失败时成功地使作业失败。
这种行为似乎是完全随意的,关于我们配置的一切看起来都应该如此。我错过了什么?
谢谢!
答案 0 :(得分:2)
这里有两件事在起作用。
首先,我们启用了break_on_failure gtest选项,这在本地计算机上运行测试时效果很好但在Jenkins中没有用,所以我们在构建计算机上禁用了它。
第二个问题是我们如何使用退出代码。由于ios-sim launch ...
总是成功,我们总是得到退出代码0,无论测试是通过还是失败。我最终使用grep
来确定生成的xml文件是否指示任何失败,并基于此生成退出代码。