我写一个Rails 3.1的应用程序,我有三个一组的黄瓜功能文件。 当单独运行,如:
cucumber features/quota.feature
-- or --
cucumber features/quota.feature:67 # specifying the specific individual test
......每一个特征文件运行正常。 然而,当一起运行,如:
cucumber
......其中一个测试失败。 很奇怪,因为只有一个测试失败; 在该功能中的所有其他测试都通过(其中许多人做类似的事情)。 它似乎并不无论身在何处的特征文件,我把这个测试; 如果是第一次测试或一路下来的某个地方失败。
我不认为这可能是测试本身,因为当整体特征文件单独运行独立,甚至运行时,它传递。 现在看来似乎必须与运行不同的特征文件一起一定的影响。 任何想法可能是怎么回事?
它看起来像有你的场景之间的耦合。 发生故障的情况下,假定系统在某些状态。 当场景单独运行系统处于此状态等情况下通过。 但是,当你运行的所有场景,以前运行的场景改变这种状态,所以它失败。
你应该让你的情景完全独立的解决这个问题。 任何情况下的工作不应该影响的其他情形的结果。 我们强烈鼓励黄瓜书和规格的实例 。
我有一个类似的问题,我花了很长的时间来找出根本原因。 我用@selenium标签硒客户端上进行测试,JQuery的脚本。 我的页面已经陷入发送POST请求Ajax调用。 我在JavaScript中有一个bug和后请求失败。 (该功能是不完整的,我还没有写步骤来验证Ajax调用的结果。)这个错误记录在Capybara.current_session.server.error
。 当在执行以下非硒功能内水豚一个前钩叫Capybara.reset_sessions!
这就叫做
def reset!
driver.reset! if @touched
@touched = false
raise @server.error if @server and @server.error
ensure
@server.reset_error! if @server
end
@server.error
是不是nil用于下列特征(多个特征)每个场景和黄瓜报告的每个步骤中跳过。 在我的情况的解决方案是解决Ajax调用。 所以安德烈Botalov和Doug诺埃尔是正确的。 我已经从早期的特征延续。 我必须继续调试,直到我发现,正在提出和探讨什么产生它的例外。 我希望这可以帮助别人是不知道他们已经从早期的特征延续。