2014-09-25 52 views
1

我目前有一个项目,有一大堆Cucumber .feature文件,其中许多方案已知被破坏。这些场景的标签为@broken,我们避免通过执行黄瓜-t [email protected]来运行它们。不幸的是,当我们检查黄瓜产量时,这使得这些情景有效地不可见。它们不会显示为通过,失败或跳过。我想要的是将这些场景的数量包括在黄瓜产量中。他们应该显示为“跳过”测试,而不是根本不显示。如何在黄瓜中“跳过”带有标签的场景?

我的尝试:

Before('@broken') do |scenario| 
    pending 
end 

但是,这引起了Cucumber::Pending例外其中,未捕获的,只是失败的情况。

我知道我可以写像步:

Given /^PENDING/ do 
    pending 
end 

,然后再通过我的所有特征文件,并添加这一步对每个场景都与@broken标签。虽然这看起来很疯狂。它不符合“步骤”应该是什么的语义(更不用说它需要对我的所有功能文件进行广泛的更改,而不是仅仅为标签添加钩子)。

这是我能用标签做的事吗?

回答

2

编辑:

根据您的意见,您使用的是黄瓜1.3.10。该版本不可能。

在cucumber-jvm和cucumber-js中,它按预期工作,将场景标记为挂起,但令人惊讶的是在ruby中,如果Pending异常是从Before(或After)挂钩引发的,它会将该场景标记为失败待处理。

所以你的第一个建议是对的。你应该使用标记的钩子。

Before('@broken') do 
pending 
end 

但是,您将不得不更新您的Gemfile以使用最新版本的黄瓜,即此时的2.0.0.beta.3。

source 'https://rubygems.org' 
group :test do 
    gem 'cucumber', '2.0.0.beta.3' 
end 

那么输出将达到预期,标为待定(没有跳过,因为没有这样的东西作为跳跃的情况下,只有通过/失败/挂起/未定义/跳过步骤,并通过/失败/挂起/未定义的场景)。

希望这会有所帮助。

+0

正如我所说的,当我试图使用标记的挂钩时,它标记的方案失败而不是挂起。我收到以下错误: 'TODO(Cucumber :: Pending) /Library/Ruby/Gems/2.0.0/gems/cucumber-1.3.10/lib/cucumber/cub_support/rb_world.rb:130:in' ' /Users/me/test/steps/test.rb:6:in'Before'' – user108471 2014-09-26 13:20:52

+0

我明白了,我已经建立了一个Ruby项目,事实上它标记了挂起的异常从钩子。在我通常使用的cucumber-jvm和cucumber-js中,它按预期工作,将情景标记为待定。无论如何,我会看看Ruby实现,看看是否有解决方法。问候。 – 2014-09-26 15:11:13

+0

好的,我现在正在工作,但是你将不得不更新到最新版本2.0.0.beta.3,我会更新我的答案。 – 2014-09-26 15:27:49

1

虽然这个问题很老,但它仍然是Google的最爱 - 所以为了未来访问者的利益,我分享了这个。

我标记我的场景,然后在我的“step_definitions/hooks.rb”的文件,我有这样的事情:

Before('@proxy') do 
    skip_this_scenario unless proxy_running? 
end 

运行时,情况是正常跳过。

1 scenario (1 skipped)