- 我创建了一个简单的 Asp.net MVC 4 应用程序
- 我使用 visula studio 2010 扩展创建了 NUnit 测试项目
- 我添加了几个控制器(带有模型和视图)并且网站运行良好。它适用于 Sql Server CE
现在我需要测试一个控制器。我写了这个简单的类:
namespace SkateboardShop.Tests.Controllers
{
[TestFixture]
class BrandControllerTest
{
[Test]
public void TestDetailsView()
{
var controller = new BrandController();
var result = controller.Details(2) as ViewResult;
Assert.AreEqual("Details", result.ViewName);
}
}
}
当我运行此测试时,NUnit 会返回此错误:
SkateboardShop.Tests.Controllers.BrandControllerTest.TestDetailsView: System.Data.ProviderIncompatibleException:从数据库获取提供者信息时出错。这可能是由 Entity Framework 使用不正确的连接字符串引起的。检查内部异常以获取详细信息并确保连接字符串正确。----> System.Data.ProviderIncompatibleException :提供程序未返回 ProviderManifestToken 字符串。----> System.Data.SqlClient.SqlException:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:
当然,测试项目从哪里获取数据提供者信息?我将连接字符串添加到 app.config 文件(测试项目的)中,如下所示:
<connectionStrings>
<add name="SkateboardEntities" connectionString="Data Source=d:\Basic\project\asp\SkateboardShop\SkateboardShop\App_Data\SkateboardShop.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>
但无事可做。由于我是 MVC 和 NUnit 的新手,所以我首先要问的是,单元测试是否应该测试真实的数据库数据,以及它是否是一个好方法,如何做到这一点。
谢谢。