2010-08-24 53 views
15

我明白單元測試背後的想法,但我試圖想到一個乾淨簡單的方法,當它需要數據庫功能時。例如,我有一個函數返回基於數據庫選擇查詢的結果。爲了正確地看到只有正確的結果被返回,數據庫會一直保持不變。當需要數據庫不活動時(無論是讀取,寫入,更新還是刪除),執行單元測試(使用PHP)的最佳方式是什麼?什麼是使用數據庫爲功能創建單元測試的標準/最佳實踐?

+1

請參閱:http://stackoverflow.com/questions/145131/whats-the-best-strategy-for-unit-testing-database-driven-applications/145163 – 2010-08-24 19:17:32

回答

14

有一個在PHPUnit的手冊上是一整章:

這就像一切時的單元測試。創建一個已知狀態並根據它測試你的代碼,看它是否返回預期的結果。

+0

恐怕指向的鏈接isn沒有工作(404)。 – 2012-08-21 08:55:59

+0

更新後的鏈接https://phpunit.de/manual/current/en/database.html – leticia 2014-09-27 20:34:22

4

就我個人而言,我創建了一個虛擬測試數據庫,併爲每個測試運行(我在setUp函數中正確執行該操作)爲其填充了一個已知數據集。然後測試運行該數據集,然後它被刪除tearDown ...

現在,這是一個比單元測試更集成測試(我個人對待它與單元測試不同,運行在它的自己的時間表以及其他集成測試),但它仍然非常有用。

+0

+1對'更多的集成測試比單元測試' - 我目前正在確定我們的'單元'測試對數據庫有副作用並將它們重新歸類爲集成測試,以便我們可以更頻繁地運行適當的單元測試,並保存整夜運行的慢速集成測試。 – 2010-08-24 19:59:47

5

它不是一個單元測試,如果它需要數據庫的話。

+1

坦率地說,很明顯,提問者正在談論*功能*測試,這應該確實像你的數據庫。 – 2010-09-13 05:01:23

+0

這很有趣!從來沒有意識到這一點... – Sliq 2014-09-28 15:28:52

+1

這應該是一個問題的評論,或者甚至編輯,但這不是一個答案。 – 2016-10-11 15:09:23

相關問題