所有测试都通过了,但竹子构建失败并显示“没有找到失败的测试,可能发生了编译错误”。

Posted

技术标签:

【中文标题】所有测试都通过了,但竹子构建失败并显示“没有找到失败的测试,可能发生了编译错误”。【英文标题】:All the tests passed, but bamboo build fails with a statement "No failed tests found, a possible compilation error occurred." 【发布时间】:2012-07-17 10:08:12 【问题描述】:

我应该在竹子中运行一些 jbehave(自动化)测试。一旦测试运行,我将生成一些与 junit 兼容的 xml 文件,以便竹子可以理解相同的内容。所有 jbehave 测试都作为脚本的一部分运行,因为我需要在单独的显示屏中运行 jbehave 测试(记住这些是自动浏览器测试)。示例脚本如下。

例如:

export DISPLAY=:0 && xvfb-run --server-args="-screen 0, 1024x768x24" 
mvn clean integration-test -DskipTests -P integration-test -Dtest=*

我还有一个 junit 解析器任务,它指向生成的 junit 兼容 xml 文件。因此,一旦竹子构建运行并且即使所有测试都通过,我也会得到红色构建,并显示消息“未找到失败的测试,可能发生了编译错误。”

有人可以在这方面帮助我吗?

【问题讨论】:

【参考方案1】:

您的构建脚本可能会生成成功的测试报告,但您的一项(或两项,可能)任务失败了。这意味着失败可能发生在您的测试完成后。检查您的构建日志是否有错误。您也可以尝试登录到您的 Bamboo 服务器(以竹用户身份)并手动运行命令。

过去,当我们的测试任务在测试运行中途崩溃时,我曾看到此消息,导致 Bamboo 忽略了一个格式错误的报告和一堆成功的报告。

*检查构建日志以确保您的测试确实在运行。如果 mvn clean 没有清除测试报告目录,Bamboo 可能只是在解析陈旧的测试报告。


编辑:(响应 Kishore 的链接)

看起来你杀死 Xvfb 的任务是导致构建失败的原因。

18-Jul-2012 09:50:18    Starting task 'Kill Xvfb' of type 'com.atlassian.bamboo.plugins.scripttask:task.builder.script'

18-Jul-2012 09:50:18    
Beginning to execute external process for build 'Functional Tests - Application Release Test - Default Job'
 ... running command line: 
/bin/sh
  /tmp/FUNC-APPTEST-JOB1-91-ScriptBuildTask-4153769009554485085.sh
 ... in: /opt/bamboo-home/xml-data/build-dir/FUNC-APPTEST-JOB1
 ... using extra environment variables: 

<..snip (no meaningful output)..>

18-Jul-2012 09:50:18    Failing task since return code was 1 while expected 0

18-Jul-2012 09:50:18    Finished task 'Kill Xvfb'

你的“Kill Xvfb”脚本是做什么的?你在尝试像 pkill -f "[x]vfb" 这样的东西吗? pkill -f 如果无法将表达式与任何进程匹配,则静默返回非零值。

【讨论】:

Choover,感谢您的回复。我的任何竹子任务都没有看到任何可能的错误。肯定有一些堆栈跟踪是由我的应用程序引起的。请查看构建ci.openmrs.org/browse/FUNC-APPTEST/latest 和登录ci.openmrs.org/download/FUNC-APPTEST-JOB1/build_logs/… 了解更多详情。 对不起,评论框中没有足够的空间来发布日志输出,所以我最终编辑了我的帖子——见上文^【参考方案2】:

我的解决方案是制作一个“脚本”任务:

#!/bin/bash
/usr/local/bin/phpcs --report=checkstyle --report-file=build/logs/checkstyle.xml --standard=PSR2 ./lib | exit 0

总是以状态 0 退出。

这是因为 PHP 代码嗅探器在仅发现 1 个编码违规(警告/错误)导致构建失败时返回退出状态 1。

【讨论】:

同样的解决方案也适用于我们的 Windows 构建服务器。必须使用管道而不是新行作为出口,否则出口 0 不会 - 总是 - 在运行 karma 后被调用!【参考方案3】:

原来是一个简单的修复。

一般竹子行为是扫描整个日志并查看任何故障代码(1)。对于这个特定的配置,我有一些 6 个脚本,其中一个是杀死 xvfb(帧缓冲区)。由于某种原因,服务器无法杀死 xvfb,并且该任务返回了失败代码。因此,尽管所有测试都通过了,但竹子从之前的任务中得到了一个错误代码,并且构建失败了。

当前的修复是删除杀死 xvfb 的任务并且构建变为绿色! \o/。

【讨论】:

哇,这正是我在回复您的评论时所说的。 叹息 酷!非常感谢您抽出一些时间查看日志输出 :) 这正是@choover 在回复您的评论时所说的。 tsc tsc tsc 您应在该回复上签名作为正确答案。

以上是关于所有测试都通过了,但竹子构建失败并显示“没有找到失败的测试,可能发生了编译错误”。的主要内容,如果未能解决你的问题,请参考以下文章

Maven 安装通过但有测试失败

在Bamboo上持续集成和部署Node.js应用程序

不能失败的竹建筑

XCTest 显示已删除测试的结果

TFS 单元测试在开发机器上通过但在构建机器上失败

运行所有测试时单元测试失败,但调试时通过