黄瓜测试通过,但詹金斯失败了

时间:2014-04-11 09:30:46

标签: jenkins cucumber

我在几台服务器上进行了大量测试。我使用Jenkins来管理所有这些。 在一台服务器(Slave Windows)上,当我在cmd中启动测试时,我得到了类似的东西:

c:/tests/cucumber --tag @dev -p ie
...
1 scenarios (1 passed)
12 steps (12 passed)
0m31.761s
echo %errorlevel%
0

测试中没有错误,黄瓜似乎很好。

当jenkins完成相同的测试时,我得到:

c:/jenkins_folder/cucumber --tag @dev -p ie
...
1 scenarios (1 passed)
12 steps (12 passed)
0m28.453s
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE

测试通过,但被詹金斯标记为失败。

命令" echo%errorlevel%"中止:在此之前工作失败。

  • 同样的工作在另一个奴隶工作上。
  • 所有个人资料和所有标签都有同样的问题。
  • 当我用实际值替换个人资料时的相同问题
  • 我没有使用--strict flag
  • Jenkins,插件:所有最新的

Windows批处理代码:

cd /test8folder
cucumber --tag @dev -p ie
echo %errorlevel%

我错过了什么?

1 个答案:

答案 0 :(得分:1)

配置似乎没有任何问题。

你在黄瓜命令之后得到Build step 'Execute Windows batch command' marked build as failure而没有实际看到执行echo %errorlevel%的事实只会再次证明黄瓜有错误(稍后会更多)。

然而,在执行Windows批处理命令中,即使错误的命令也不会退出批处理脚本(与Jenkins的默认执行Shell 实现不同) )。你应该至少看到一些退出代码,0,1或任何东西。

唯一的一次是,如果你的构建步骤中的某些内容被执行exit /b [exit_code_num]。我不知道“黄瓜”,但如果它实际上是一个cucubmer.bat并且里面有一个exit /b语句,这就是导致它在没有继续的情况下退出构建步骤的原因。

解决方案

您可以使用 call cucumber [whateverparams] ,这样即使退出exit /b,控件也会返回调用进程执行Windows批处理命令 script。

先尝试一下。你可能会看到你的echo %errorlevel%在Jenkins下执行时可能会返回一个非零值,但至少你现在会看到它。

现在,至于为什么它在命令提示符下成功,但在Jenkins中失败,可能有很多原因,最常见的原因是环境变量和路径。一旦我们真正看到黄瓜的退出代码,我们可以解决这个问题。你还说它在另一个节点上工作:更有理由相信这是一个环境问题,也许是一个不存在的文件夹......

<强> 编辑: 甚至“成功”测试执行退出调用脚本的原因是因为exit /b 0仍然会退出调用脚本,即使黄瓜退出并且“成功”0