【问题标题】:FoneMonkey test crash during Jenkins runJenkins 运行期间 FoneMonkey 测试崩溃
【发布时间】:2011-10-04 20:05:49
【问题描述】:

我使用 FoneMonkey + Jenkins 进行自动化 iOS 测试。我让 FoneMonkey 生成 XML 报告(FM_ENABLE_XML_REPORT - 设置为 TRUE)并使用waxsim 运行它。今天我发现当应用程序崩溃(即由于NSInvalidArgumentException)时,不会生成xml报告。然后在 Jenkis 中,我看到 100% 通过(我使用标准 JUNIT 插件),这显然不是真的。

发现这种情况的唯一方法是: a) 分析 Jenkins 控制台日志(即寻找*** Terminating app due to uncaught exception) b) 发现 Jenkins 报告运行测试的数量比以前少(这就是我的队友发现问题的方式)。

我知道我可以将 Jenkins Text Finder 插件用于解决方案 a),但我希望获得准确的报告。

有什么方法可以实现吗?如果没有,FoneMonkey 有用吗?

【问题讨论】:

    标签: ios testing automated-tests jenkins


    【解决方案1】:

    如果执行工具失败(由非零退出代码指示),Jenkins 会检测到这一点并将构建标记为失败。如果工具坏了,Jenkins 也无能为力。

    对于您的情况,我看到了几种可能性:

    • 应修复 FoneMonkey 以在被测应用崩溃时返回非零退出代码
    • 应将 FoneMonkey 修复为始终输出 XML,即使在被测应用崩溃时也是如此
    • 您可以编写自定义 FoneMonkey-output-to-JUnit-parser 而不是依赖 FoneMonkey(例如,存在用于解析 Android 测试运行程序输出的类似项目)

    【讨论】:

    • 谢谢,但这并不容易。 1. FoneMonkey 只是添加到应用程序的库,因此它可以将退出代码返回给主机(它在waxsim 上运行)。 2. 因为它是 lib,所以当应用程序崩溃时它不能做任何事情(即一般报告)。 3. 我知道在 android 上是仪器/测试运行器等,在 iOS 上没有。所以唯一的方法是解析整个日志(就像在 android 中解析 logcat)。
    • 啊,要嵌入吗?这听起来不太好。但是,如果测试运行程序在应用程序失败的情况下没有返回非零输出,这仍然是一个错误。无论如何,如果 FoneMonkey 在应用程序崩溃时无法生成报告,那么在构建结束时如何生成报告?你能集成类似 BPOCUnitXMLReporter 的东西,而不是依赖 FoneMonkey 的输出吗?您是否在他们的错误跟踪器上提交了一个错误,询问这些问题?是什么阻止您解析日志输出?
    • 我认为 BPOCUnitXMLReporter 仅适用于 OCUnit 测试。关于返回非零退出代码 - 我不确定这是否是运行测试时的最佳方法,例如在运行 JUnit 测试时 Jenkins 默认行为仅将构建标记为不稳定未失败 - stackoverflow.com/questions/1004912/…。这也很糟糕,因为它只会运行到第一次失败,我想运行所有测试并拥有包含所有崩溃的报告(我为每个测试重新启动waxim - 我使用 env 变量告诉 FoneMonkey 它应该运行哪个测试)。跨度>
    • 是的,我可能会以控制台解析结束,但我想检查这是否是唯一的方法,因为奇怪的是 FoneMonkey 如此受欢迎而且我找不到类似的问题 - 也许我'我做错了什么...
    猜你喜欢
    • 2020-06-05
    • 1970-01-01
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多