2013-03-20 44 views
1

如何檢查您的程序是否在應用程序內部通過specs2進行測試?例如在Play中你可以用play.Play.isTest()如何查看代碼是否在specs2的測試模式下運行?

+0

爲什麼你需要知道這一點? – 2013-03-20 08:21:23

+0

對於初學者來說,你想在測試時使用不同的數據庫。還有其他方法可以實現這一點(我已經完成了這一點),但有時候只需要一個簡單的解決方案。例如,我可能希望將敏感數據添加到我的日誌信息中,我不希望用戶能夠通過擺弄外部日誌記錄配置來查看生產情況。 – Jack 2013-03-20 08:45:31

+0

使代碼的行爲取決於它在測試模式還是生產模式下運行可能是短期內的簡單解決方案......並且可能在長期內容易逆火。 – 2013-03-20 12:46:48

回答

0

使用適當的DI技術,例如Cake(或者甚至在更簡單的情況下構造函數參數注入),並且您可以控制需要以不同方式完成的事情或者在測試期間採用不同形式。

+0

謝謝,我意識到這是正確的方法(我早些時候使用過Cake),但對於更多的初級開發人員來說,維護會變得有點棘手。我正在尋找一個很好的,但簡單的方法來實現這一目標。 – Jack 2013-03-20 16:50:26

+1

在你需要它的地方寫一個'if(testMode)... else ...'可能看起來更簡單,但這很快變得難以管理。最好是一勞永逸地攀登學習曲線,避免使用更舒適但更不易處理的方法的「技術債務」。我最近經歷了這個過程。這次我使用了構造函數注入,這讓我感覺更舒適。幸運的是,該系統非常簡單,並且沒有長期存在。但對於下一個大系統,我要全力以赴。 – 2013-03-20 17:05:54

0

查詢作爲啓發式,根據你的調用位置,你可以填寫一個堆棧跟蹤異常並檢查specs2方法是否被執行。

相關問題