2014-09-25 138 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)