2013-02-24 53 views
1

我正在嘗試使用我的實體框架+測試體驗。我在NUnit中編寫了測試,刪除這些表,創建一個新的數據庫,在測試所需的表中創建行,進行測試並重復。集成測試Entity Framework,需要不同的數據庫服務器?

關於two different test strategies有一個不錯的帖子,解釋了Effort(在內存數據庫中)有一些缺點。無論如何,我確實有強烈的傾向於對實際數據庫進行測試,因爲我可以驗證數據庫以驗證數據庫中是否以及如何最終結束數據庫。

然後,我遇到了this後,在那裏我可以讀,我應該/可能有不同的數據庫服務器爲我的應用和我的測試。例如。應用程序針對SQL Server運行,而測試則針對SQL Server CE運行。

我有幾個工作集成測試,現在在SQL Server Express上工作。我的應用程序在同一個連接字符串上運行,針對同一個數據庫服務器實例

這是不明智的嗎?

我長期處於困境中嗎?

任何人都可以確認並解釋是否需要/建議爲應用程序(SQL Server)和集成測試(SQL Server CE)使用不同的數據庫服務器?

非常感謝。

+0

我訪問了一篇文章,說你應該/可以擁有一個不同的數據庫服務器,但實際上並沒有在該文章中找到任何說「你應該有兩個不同的數據庫服務器」的東西。 – 2013-02-24 09:23:44

+0

@MarkHildreth,你是對的,我將重新提出一個問題:「任何人都可以確認並解釋如果它需要/建議使用不同的數據庫服務器......」(爲什麼=> if)。我能否早期得出結論:您認爲這不是必需的,我可以在應用程序和測試環境中使用相同的服務器? – bas 2013-02-24 09:30:54

+0

我假設「相同的服務器」,你的意思是「相同的服務器類型」(MSSQL是一種類型的服務器,SQL CE是另一種,sqlite的另一種..)。顯然,你不希望將你的實時服務器(實際的服務器和你所有的實時數據)用作你的測試服務器,因爲你最終會把一堆測試數據放到你的實時服務器中,或者完全刪除你的實時數據... – 2013-02-24 09:33:04

回答

7

將SQL Server用作數據庫,將SQL Server CE用作測試數據庫可能是值得的。這很常見,因爲在SQL Server CE而不是SQL Server上運行測試可能會更快,因爲這些測試通常會執行這些測試(創建整個數據庫,執行快速事務,然後徹底銷燬它)。這也意味着您不需要在開發機器上安裝完整的SQL Server。

但是,沒有必要這樣做。有些人可能也不想這樣做。你甚至可能在你的程序中使用了一個只能在SQL Server上使用的功能,這基本上意味着你將無法使用SQL Server CE。

最後,您的代碼有可能與SQL Server CE一起使用,但不能與SQL Server一起使用,因此在測試期間不會出現問題。有一次,我運行了一個針對MySQL的應用程序,但是使用sqlite來運行一些測試。 sqlite的工作方式與MySQL導致我的程序在測試中正常工作但實時失敗的方式略有不同。

因此,我仍然建議您能夠針對您將在現場使用的相同類型的數據庫進行測試。你總是可以找到中間立場,例如針對SQL Server CE測試數據庫進行開發,然後在開始使用新版本以覆蓋該案例之前切換到SQL Server上的測試。

+0

總之:真棒。非常感謝!有一件事不用擔心。它讓我感到安慰,因爲我知道我不會做一些我後悔的事情。 +1 – bas 2013-02-24 09:44:08

相關問題