2014-12-05 80 views
1

在對這個問題做了一些研究之後,我發現它之前被問過。答案總是似乎是「如果你需要有條件地跳過測試,你做錯了什麼」。我是Cucumber和編程的新手,所以我希望有人對如何克服目前的困境提出建議。如何在黃瓜中有條件地運行測試

我們團隊開發的所有新功能都放在功能標誌的後面,並在每個環境準備就緒時開啓,即它們始終在開發中,通常在測試中,有時在集成中,並且僅在當我們認爲他們準備好出貨時,我們就會進行升級和推廣。

我知道標記功能,並認爲這可能是一個解決方案,除了幾件事。其中,有很多功能,它們經常在各種環境中打開和關閉。除非我完全處於最重要的位置,否則我會錯過是否需要更改特定的功能標籤。另一個問題是我正在共享測試代碼庫中工作,而我們的標記系統目前並未在每個環境中進行設置。雖然我可以開始爲這種變化進行遊說,但這不可能在短期內發生,而且由於以前的原因,我不確定我會對該解決方案感到滿意。

我最想做的就是使用功能標誌並沿着「如果標誌X爲真,然後運行此測試,否則什麼都不做」的代碼。但是,我一直無法找到一個「什麼都不做」的方法。如果沒有設置標誌,我已經設置了一些測試來做「掛起」,但是如果沒有設置標誌,我寧願讓測試不運行。等待使它看起來像我有一堆不完整的測試用例,這是不正確的。

在此先感謝您的建議。

回答

0

您可以爲每個場景添加應該運行的環境,然後在調用黃瓜時使用該標記。

0

一個可能的解決方案是爲每個功能的所有測試添加一個標籤,然後編寫一個啓動腳本,該腳本貫穿項目,檢查每個標誌,然後將關聯標籤傳遞到黃瓜。

在紅寶石,這將是這個樣子:

cuke_cmd = "cucumber --tags @essential 
flags.each do |flag| 
    if getFlagState(flag) # code which checks if the flag is true 
    cuce_cmd += ","+getFlagTag(flag) # getFlagTag returns the associated tag in the format @flag 
    end 
end 
system(cuke_cmd) 
在此@essential標籤

將適用於任何事情總是會被運行,每個附加特性將具有與其相關聯的標籤。

然後,您將想要查看所有可能的標誌並將相關標籤追加到命令中。

在程序結束時,程序會執行標記設置爲true的每個要素的標記。