【发布时间】:2015-09-18 17:56:16
【问题描述】:
我有一个使用实体框架的应用程序。我正在编写一个单元测试,我想在其中使用 CSV 文件中的数据驱动测试。
但是,当我运行测试时,出现无法加载 sqlserver 提供程序的错误:
初始化方法 UnitTest.CalculationTest.MyTestInitialize 抛出 例外。 System.InvalidOperationException: System.InvalidOperationException:实体框架提供程序类型 'System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer' 在应用程序配置文件中注册 对于具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序 无法加载。确保程序集限定名称是 并且该程序集可用于正在运行的应用程序。
- 如果我删除数据驱动方面并仅测试单个值,则测试有效。
- 如果我只使用数据驱动方面并删除实体框架的东西,那么测试就可以了。
所以,只有当我尝试使用数据驱动测试和同时激活的实体框架时,我才会收到错误消息。那么,我哪里错了?
这是我的测试方法:
[TestMethod, TestCategory("Calculations")
, DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV"
, "ConvertedMeanProfileDepth.csv", "ConvertedMeanProfileDepth#csv"
, Microsoft.VisualStudio.TestTools.UnitTesting.DataAccessMethod.Sequential)
, DeploymentItem("ConvertedMeanProfileDepth.csv")]
public void ConvertedMeanProfileDepthTest()
{
ConvertedMeanProfileDepth target = new ConvertedMeanProfileDepth();
Decimal mpd = decimal.Parse(this.TestContext.DataRow["mpd"].ToString());
Decimal expected = decimal.Parse(this.TestContext.DataRow["converted"].ToString());
Decimal actual;
actual = target.Calculate(mpd);
Assert.AreEqual(expected, actual);
}
【问题讨论】:
标签: entity-framework unit-testing data-driven-tests