【发布时间】:2012-04-28 00:01:46
【问题描述】:
- 我创建了一个简单的 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:发生错误时 从数据库中获取提供者信息。这可能是由于 实体框架使用了不正确的连接字符串。检查内部 有关详细信息的例外情况,并确保连接字符串是 正确的。 ----> System.Data.ProviderIncompatibleException : provider 未返回 ProviderManifestToken 字符串。 ----> System.Data.SqlClient.SqlException : 网络相关或 建立连接时发生特定于实例的错误 SQL 服务器。服务器未找到或无法访问。核实 实例名称正确且 SQL Server 配置为 允许远程连接。 (提供者:SQL 网络接口,错误:26 - 定位服务器/指定实例时出错)
当然,测试项目从哪里获取数据提供者信息? 我将这样的连接字符串添加到 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 的新手,所以我首先要问的是,单元测试是否应该测试真实的数据库数据,如果这是一个好方法,该怎么做。
谢谢。
【问题讨论】:
-
这些是集成测试吗?如果是这样,那么您的测试项目是否包含类似于您的 asp.net 应用程序的配置文件?如果它不是一个集成测试,那么你没有为你的持久层注入依赖。
标签: c# unit-testing nunit sql-server-ce asp.net-mvc-4