我有一個包含Core項目頂部的Services項目的MVC項目的解決方案。MVC中的單元測試無法創建/訪問數據庫
我剛剛添加了一個單元測試項目和引用的核心和服務 - 我試圖測試服務。
我在測試中的基本呼叫:
public class CrudTests
{
private readonly SetServices _setService = new SetServices();
[TestMethod]
public void TestMethod()
{
_setService.CreateSet("Test Set", "Test Set Details", null);
這最終失敗,因爲測試不能連接到數據庫。我的配置具有這樣的:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=.\;Initial Catalog=Project.Services.Tests;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Project.Services.Tests.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
我已經通過創建數據庫Project.Services.Tests,然後運行試過,但我得到這樣的:
消息=數據庫「C:\ Program Files文件\ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ DATA \ App.Services.Tests.mdf' 已存在。選擇不同的數據庫名稱。無法將 文件 'C:\ PROJECTS \ App \ App \ Services.Tests \ bin \ Debug \ Services.Tests.mdf' 作爲數據庫'App.Services.Tests'附加。 。 來源= .net SqlClient數據提供 錯誤碼= -2146232060 類= 16 LineNumber上= 65536 數= 1801 程序= 「」 服務器= \ 狀態= 2 堆棧跟蹤:
我試着刪除數據庫,讓測試做它的事情,我得到這個:
發生文件激活錯誤。物理文件名 '\ Project.Services.Tests.mdf'可能不正確。診斷並更正 其他錯誤,然後重試該操作。
我該如何正確工作?
IMO單元測試手段在沒有數據庫交互的情況下,您可以使用假或模擬進行單元測試。如果你使用數據庫進行單元測試,那麼你的測試將會像烏龜一樣慢:D – 2013-02-21 04:33:18
我明白了 - 我一次只想學習一件事。 – RobVious 2013-02-21 15:11:16