我已經閱讀了關於單元測試各種應用程序的有用性的幾個主題。這些意見可以從「一直測試所有事情」到「單元測試無用」,以及其間的所有內容(「測試有意義的測試」)。我傾向於向中間傾斜。單元測試第三方ORM
這使我想到我的問題。我想,以決定是否將是有益的或實用的有一些基本的單元測試測試的第三方ORM的建議在這種SO帖子: link text
一些基準測試可以作爲對未來的重大更改保險有用,這取決於你如何使用該工具。例如,不是模擬整個n層鏈(我不是在不需要的時候嘲笑),只需使用ORM工具來創建,讀取,更新和刪除一個典型的對象/記錄,並且使用(測試)數據庫上的直接SQL語句驗證操作。這樣,如果第三方供應商稍後更新了某些會破壞其基本功能的內容,並且項目的新開發人員可以很容易地看到如何使用單元測試示例中的ORM工具。
我的主要保留下面這個建議是,它需要太多的設置,將是一個頭痛要維護,總而言之,它不會在我們的環境中實際。下面是一些點的總結考慮:
- 我們正在使用的ORM需要創建和其數據訪問層註冊,並通過身份驗證的用戶相關聯的靜態數據源對象(S)。這需要大量的測試設置,並且在沒有用戶登錄的構建服務器上可能會出現問題。
- ORM供應商在發佈新更新和不打破基本功能方面擁有相當不錯的記錄。此外,無論何時何時將ORM更新至最新版本,我都會想到該應用程序不會直接進入生產環境,但是無論如何都會進行徹底的迴歸測試。
- 在這種環境下維護單元測試的測試數據庫是有問題的。在每個主要發行版之後,測試數據庫將被清除,並使用混淆了敏感數據的分段替換數據庫備份。我會想象爲了有ORM單元測試的測試數據庫,我們需要運行一些腳本/代碼來將數據庫設置爲「測試」狀態。再次設置和維護太多。
- 最後ORM文檔/幫助新開發人員。我可以看到這樣的事情可能會有用。但是,ORM供應商提供了相當不錯的文檔/幫助演示應用程序。所以編寫單元測試似乎並不值得所有的努力。
那麼,爲了確保ORM完成它應該做的事情(這是CRUD),是否值得去解決所有這些問題?無論如何,它不應該是供應商的責任嗎?