2012-06-08 20 views
2

我們正在使用Scala中的Play 2.0框架來完成我們的第一個項目。我們想知道是否有一個(或更多)現有的最佳實踐或庫可用於從集成和端到端測試的「GIVEN」部分生成測試數據?Play 2.0數據庫模型生成集成TDD/BDD

例如,在Rails世界中,人們可能會有一個黃瓜步驟GIVEN there are 10 users who like chocolate,它在引擎蓋下使用FactoryGirl或類似的庫在數據庫中生成這些模型;那麼您可以自動計算在測試運行之間清空的測試數據庫,並且測試運行在與您的實際應用程序不同的數據庫實例中。

在使用Play 2.0的Scala世界中,我們正在考慮在MySQL上使用Anorm。我們是否應該特殊情況下使用內存數據庫進行測試(注意清除它),並編寫代碼來簡單地在我們的GIVEN塊中創建並保存案例類?

沿着同樣的路線,Play「evolutions」會自動運行以產生測試內存數據庫中的生產模式嗎?

感謝您的幫助,以避免在這裏重新發明車輪。

+0

你發現了什麼嗎? –

+0

@streetpc是的,在下面添加我自己的答案來捕捉我們學到的一些東西 –

回答

2

因爲我問這個問題,我們已經談妥了以下工作流程:

  • 使用ScalaQuery 0.10.0-M1 W/case類的模型
  • 使用FakeApplication與內存數據庫單元測試和功能測試
  • 使用一個真正的,本地的MySQL數據庫集成和終端到終端的測試
  • 由於在這個問題上提出的,我們堅持了型號爲每個給定
    • 對於使用H2內存數據庫進行單元和功能測試,每個測試都有一個新的數據庫,它非常快速且與其他測試隔離,無需清理
    • 對於集成和端到端在使用本地MySQL數據庫的測試中,測試共享一個數據庫。目前,我們正在使用的每一個給定的隨機數據,使測試不互相影響,並定期清理我們的本地數據庫

到目前爲止這個過程得不錯對我們來說,有幾個陷阱是是其他的StackOverflow問題的主題(TODO:鏈接到這些問題在這裏

在回答上面我的問題:,變陣是當一個內存數據庫長大每次運行。