重试失败的 xcodebuild 测试
Posted
技术标签:
【中文标题】重试失败的 xcodebuild 测试【英文标题】:Retry failed xcodebuild test 【发布时间】:2019-09-17 17:17:41 【问题描述】:我正在为 ios 应用程序构建/测试检查构建自定义 Jenkins 构建脚本 (sh)。 但有时 UI 测试只是因为时间问题而失败,所以我希望它重新运行几次以确保问题是真实的。
for (( ATTEMPT=1; ATTEMPT<=2; ATTEMPT++ ))
do
xcodebuild [flags] test #add_result_saving_mechanism
#if failed, do smth to go to next attempt. Else - break
if SOME_KIND_OF_FAIL_CHECK; then
continue
else
break
fi
fi
我之前使用过 xcpretty,因此能够读取 $PIPESTATUS 并做出相应的反应,但由于某种原因 xcpretty 因xcodebuild test
而崩溃,所以想办法不使用它
xcodebuild [flags] test | xcpretty
STATUS="$PIPESTATUS"
if [ "$STATUS" != "0" ]; then
FAILURE_MSG="$TARGET ($BUILD_NAME) failed UI/Unit testing"
#try next attempt if available
continue
else
break
fi
如何在没有管道/xcpretty 的情况下处理这些重试?
【问题讨论】:
如果您的问题的答案之一是正确的,您应该考虑接受它。 【参考方案1】:从 jenkins 的角度来看 - 如果脚本遇到错误,它总是会提前退出,所以你可以尝试这种类型的语法来防止这种情况(在 jenkins 配置中,而不是在脚本本身中)
jenkins_build_script.sh || true
# continue with things...
另外,如果您在捕获故障本身时遇到问题 - 尝试将 xcodebuild 输出通过管道传输到日志文件,然后使用 grep 查找您预期的错误。
【讨论】:
【参考方案2】:既然你说它是由 Jenkins 运行的脚本,你可以从 Jenkins 管道而不是在 shell 脚本中处理重试。
如文档中的示例
pipeline
agent any
stages
stage('Deploy')
steps
retry(3)
sh './flakey-deploy.sh'
You can read about it here
希望这将有助于好运。
【讨论】:
以上是关于重试失败的 xcodebuild 测试的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Mocha 在 Detox 中重试失败的端到端测试?