我有一个包含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