我在集成測試中有一個非常特殊的情況。可以在集成測試中打到數據庫嗎?
我正在開發一個由少量使用spring引導的微服務組成的Rest API。這些服務中的一些基本上具有crud操作,可以由UI應用程序訪問或用於內部驗證/查詢。
所有的數據庫操作都是通過遺留庫(無jpa)的過程完成的,我使用的是非標準數據庫。我知道好的做法說不使用真正的數據庫,但在這種情況下,我無法想象如何在測試時間內使用虛擬數據庫(如dbunit或h2)。這樣:
1 - 可以在集成測試中打真正的數據庫嗎?
如果1是確定的,我還有一個問題:
通常情況下,我們不改變單位/集成測試的數據狀態;並且測試應該是彼此獨立的。
但是,在我的情況下,我只知道post方法的響應中的實體id是什麼,使得難以實現get/put/delete方法。當然,在get/put/delete方法中,我可以先插入然後再進行另一個操作,但從這個角度來看,最後,我將在測試開始時的一個不同狀態的數據庫中。這樣,我的另一個問題是:
2 - 如何在測試之前將數據庫恢復到相同狀態?
我知道它可能是一個特定的情況,但我真的很感謝任何幫助,找到一個優雅的方式來測試這種情況。
在此先感謝。
集成測試*將*打到真正的數據庫 - 因爲它是*集成*測試。播種數據庫的方法很多,例如DbUnit,但還有其他的方法。 –
只需帶數據的數據庫副本,並在完成集成測試後,使用它 –
您是否想使用實時數據?在運行測試時,其他人可以訪問數據嗎?如果您修改數據庫並且其他人可能正在訪問您的測試數據並認爲它是真實數據,那麼可能會導致哪些問題? – ajb