2013-10-22 18 views
2

在過去的幾周裏,我一直在爲Java測試幾個驗收測試框架(例如Fitnesse,JBehave)。適用於Java平臺的商用BDD工具

在決定使用哪一個之前,我試圖找出是否有任何商業選擇,但沒有真正找到。任何指針讚賞。

我們的要求是(不完整,未排序):

  • 利用給予/時/然後風格的文字和表格的
  • 集成的標準庫,如JUnit,的Mockito
  • IDE - 整合/工裝
  • 較強的報告(可讀性爲業務分析師,開發人員診斷)

回答

2

對於商業選擇:

  • ThoughtWorks的"Twist"
  • 保羅傑拉德的"Business Story Manager",其中也扮演着到一些更高級別的BDD模式,確定利益相關者和跟蹤的情況下關係到較大規模的要求

這些是我所知道的唯一兩個。 BDD社區也沒有大的追隨者。我相信兩個最常用的工具是JBehave和Cucumber(@kazakovs指出也可用於JVM)。這有助於捕捉英語語言的情景,這對開發人員和業務分析人員都是可讀的。我也使用了Fitnetse和Slim之後的.NET。一小段CSS讓它看起來像其他的一樣,同時也允許使用表格。

但是,大多數BDD工具都是爲全堆棧系統範圍的場景設計的,通常沒有任何被模擬出來的情況,或者可能被第三方庫替換爲定製框架。嘲笑圖書館沒有真正的設置在這個規模上工作。

如果您希望整合Mockito和JUnit,聽起來好像您可能試圖以更小規模的BDD進行嘗試,只能使用類或小組類。這就是BDD最初如何開始並且是完全有效的。

自BDD成立以來,像JUnit這樣的工具得到了改進,並且Mockito不存在!所以BDD工具不再特別必要。對於類級別的代碼,我會很樂意簡單地使用Given,When和Then的註釋,比如this(這是C#,但是Java會相似)。

作爲更高級別的替代品,您總是可以敲打small DSL。這並不需要我很長時間,即使對於非技術性的商業人士也是如此。它使用JUnit運行,如果你想要的話,你可以把Mockito放在那裏(但是如果你想這樣做,我仍然懷疑你正在混淆擔憂)。

DSL的另一個好處是,它是一種快速,便宜的入門方式,沒有任何Cucumber或JBehave的設置開銷;但是生成的步驟稍後可以輕鬆移植到JBehave之類的東西(您只需將代碼移動到JBehave的正則表達式步驟,如果您無法使用Twist進行類似操作,我會感到驚訝)。既然你不確定你的要求,我會推薦這條路線,因爲它會幫助你開始並獲得更多關於做什麼非常便宜的信息。

+0

感謝您的回答。我們在上週末發現Twist - 仍在等待試用許可證:-( – jens

+0

我們仍在努力尋找適合不同範圍的正確工具/方法......我們一直在試驗Given/When/Then風格以及JUnit測試中的微型DSL風格,只要您沒有大量類似的輸入組合,這兩種方法都可以使用代碼方法並不能讓我們對所有示例用例進行概述並找出缺失的示例。在JUnit中使用@Parametrized來表示決策表並不是一個好的可讀方法,當然,代碼並不總是一種促進通信的好方法,顯然這對您而言並不是什麼新信息。 – jens

+0

@jens,您可能從Cucumber獲得的好處之一et al是步驟的可重用性,這隻適用於系統級別(在單元級別,類別應該有單一的職責,沒有重複,所以沒有重複的步驟)所以我建議評論樣式fo r類。如果您使用決策表,您可以將Fitnesse/Slim和傳統的Fitnesse混合使用,或者Cucumber允許相當容易地使用表格。 – Lunivore

0

如果您可以使用Groovy,我已經與Spock Framework取得了巨大成功。您也可以使用它和Geb一起進行ui測試。我們後來從使用Geb切換到Twist,因爲它提供的功能更加便宜。我們仍然使用Spock進行所有服務測試(WebService,REST等)。閱讀我的另一個相關答案在這裏Demonstration using Spock

0

我提議看看​​3210http://www.concordion.org) - 是的,我不得不承認,這是一個開源的工具,而不是一個商業項目之一。不過,也可能是根據您的要求名單上的一個不錯的選擇:

  • 由於Concordion規格都寫在簡單的英語,你可以用給定/時/短語,然後以及表。在我們的項目中,我們更進一步,根據Concordion技術編寫我們的文檔。因此,您會收到一個生動的文檔系統,其中自動化會檢查您對預期行爲的描述是否與實際應用程序同步。

  • Concordion使用JUnit來運行測試/活動規範。在夾具類中,你可以使用任何你喜歡的框架,比如Mockito。我在自己的項目中成功地使用了Concordion和Mockito的組合。

  • Concordion的IDE集成很好,因爲它基於JUnit。因此,只要有JUnit支持,就可以使用Concordion。我一直在使用Eclipse IDE,您可以在上下文菜單中調用「Run as JUnit test」來運行和調試Concordion測試。

  • Concordion提供基於您的規格的HTML報告。因此,您的業務人員可以通過查看指定的描述並閱讀系統提供的報告輸出,輕鬆查看出了什麼問題。 Concordion在HTML文檔中顯示差異。此外,由於Concordion測試由JUnit運行,因此您將收到JUnit可能使用的所有報告支持。您可以輕鬆調試Concordion測試,例如在Eclipse IDE中,像任何其他JUnit測試一樣。

相關問題