我目前有一个包含大量Cucumber .feature
文件的项目,其中许多方案已知被破坏 . 这些场景标记为 @broken
,我们通过使用 -t ~@broken
执行黄瓜来避免运行它们 . 不幸的是,当我们检查黄瓜产量时,这使得这些场景有效地不可见 . 他们不喜欢将这些情景的计数包括在黄瓜产量中 . 它们应该显示为"skipped"测试,而不是根本不显示 .
我尝试了什么:
Before('@broken') do |scenario|
pending
end
但这引发了一个 Cucumber::Pending
异常,这个异常未被发现,只是失败了 .
我知道我可以写一个像这样的步骤:
Given /^PENDING/ do
pending
end
然后浏览我的所有功能文件,并将此步骤添加到具有 @broken
标记的每个方案中 . 但这似乎很疯狂 . 它不符合"step"应该是什么的语义(更不用说它需要对我的所有特征文件进行广泛的更改,而不是仅仅为标记添加一个钩子) .
这是我用标签做的事情吗?
2 回答
虽然这个问题很老,但它仍然是谷歌的最爱 - 所以为了未来的访问者的利益,我正在分享这个 .
我正在标记我的场景,然后在我的“step_definitions / hooks.rb”文件中,我有这样的事情:
运行时,会优雅地跳过方案 .
编辑:
根据你的评论,你使用的是黄瓜-1.3.10 . 该版本无法实现 .
在cucumber-jvm和cucumber-js中,它按预期工作,将场景标记为挂起,但令人惊讶的是,在ruby中,如果从Before(或After)挂钩抛出Pending异常,它会将场景标记为失败而不是挂起 .
所以你的第一个建议是正确的 . 你应该使用标记钩子 .
但是你必须更新你的Gemfile才能使用最新版本的黄瓜,即2.0.0.beta.3 .
然后输出将按预期,标记为挂起(不跳过,因为没有跳过的方案,只传递/失败/挂起/未定义/跳过的步骤和传递/失败/挂起/未定义的场景) .
希望这可以帮助 .