2012-02-23 47 views
8

我目前正試圖將春季融入我的黃瓜測試。我有一個自定義SpringFactory簡列如:如何將春季融入黃瓜

http://www.zsoltfabok.com/blog/2012/01/cucumber-jvm-di/

但這些代碼不會被調用。用我的測試「掛鉤」工廠的最佳方式是什麼?

[澄清評論刪除答案:主要問題是我的測試有Cucumber作爲主要跑步者,即@RunWith(Cucumber.class),所以不能在這裏使用SpringJUnit4ClassRunner。這在上面的鏈接中有描述,但沒有描述如何讀取cucumber.xml。我添加了一個新的SpringFactory但它不是讀取XML文件....]

更新:其實已經加入了遠一點:

<dependency> 
     <groupId>info.cukes</groupId> 
     <artifactId>cucumber-spring</artifactId> 
     <version>1.0.0.RC15</version> 
    </dependency> 

不過,我已經@Autowired變量,不在黃瓜運行測試時注入。

有沒有其他人有這個問題?

回答

5

快速谷歌搜索「黃瓜春季整合」帶給我herehere。如果您使用的是cuke4duke,這看起來更簡單一些。

該示例似乎表明,默認情況下,cuke4duke將從類路徑的基礎加載cucumber.xml。這是一個Spring配置文件,其中必須包含一個component-scan用於註解@StepDefinition的類。

您不需要提供SpringFactory,您不需要使用@RunWith註釋,只需提供一些Spring配置和一個或多個jvm屬性。

+0

它的工作原理!這裏有一些讓我的解決方案工作的附加點:1.不要使用picocontainer maven dependency 2.在組件掃描的Steps類上使用更多最新的@StepDefAnnotation。 – Reimeus 2012-02-24 11:45:15

1

我剛纔看到你的問題。最有可能的是cucumber-spring模塊依賴關係丟失。我已經更新了存儲庫,現在所有的依賴關係都應該沒問題(我正在使用ivy)。

9

更新:cuke4duke項目現在已經過時,並已被Cucumber-JVM取代。

我也有同樣的問題,根本原因是cucumber-spring-1.1.5.jar中的springFactory沒有讀取cucumber.xml。春天DI沉默地失敗導致NPE。 由於submission 448,Cucumber SpringFactory不再加載cucumber.xml,並且您需要在所有步驟定義類中包含@ContextConfiguration("classpath*:cucumber.xml")

-1

問題是某些版本的Spring只能用於某些版本的Cucumber-Spring和Cucumber-JVM。找到勝利的組合可能需要兩天的時間來處理jar版本。因此,從使用簡單注入的「Hello World」BDD場景開始,您會知道這些注入會起作用,因爲您需要調整這些容器,直到獲得可用的環境。

最簡單的方法是將最新版本的Spring與最新版本的Cucumber-Spring進行匹配。 Spring的新版本得到更好的支持。如果你不能簡單地升級你的spring,那麼使用描述不同版本的Cucumber-Spring和你正在使用的Spring版本之間的maven依賴關係的網站。

如果你想堅持你的遺留版本的Spring(壞主意,改變的痛苦只會越來越糟),另一種策略是使用JBehave進行BDD測試。