MVC中的单元测试不创建/访问数据库

时间:2013-02-20 22:41:26

标签: asp.net-mvc asp.net-mvc-3 unit-testing asp.net-mvc-4 mstest

我有一个MVC项目的解决方案,其中包含一个Core项目之上的Services项目。

我刚刚添加了一个单元测试项目并引用了核心和服务 - 我正在尝试测试服务。

我在测试中有一个基本的电话:

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然后运行,但是我明白了:

  

Message = Database'C:\ Program Files \ Microsoft SQL   服务器\ MSSQL11.MSSQLSERVER \ MSSQL \ DATA \ App.Services.Tests.mdf”   已经存在。选择其他数据库名称。无法附上   文件   'C:\ PROJECTS \软件\软件\ Services.Tests \ BIN \调试\ Services.Tests.mdf'   作为数据库'App.Services.Tests'。               Source = .Net SqlClient数据提供程序               错误码= -2146232060               类= 16               LineNumber上= 65536               数= 1801               过程=“”               服务器=。\               状态= 2               堆栈跟踪:

我尝试删除数据库并让测试做到了,我得到了这个:

  

发生了文件激活错误。物理文件名   '\ Project.Services.Tests.mdf'可能不正确。诊断并纠正   其他错误,然后重试操作。

我怎样才能使其正常工作?

2 个答案:

答案 0 :(得分:2)

在单元测试中,您必须在没有任何依赖性的情况下测试代码,例如数据库或文件系统等。 单元测试意味着独立地仅测试该部分代码。 如果要通过集成到数据库来测试代码,则必须创建集成测试。 这意味着您应该在运行测试之前创建数据库使用初始化,并在完成测试后拆除资源。

也许这个链接可以帮助您更多地了解difference between Unit Test and Integration Test

答案 1 :(得分:0)

您应该只修复连接字符串,它应该可以工作,您正在从| DataDirectory |附加数据库文件测试项目,