当他们在teamcity中运行时,我遇到了MSTest的一些问题 . 当我在本地机器上的VisualStudio中运行它们时,一切都很好 .
[08:05:21] [ProjName.Data.Tests.HistoryTableHandlingTest.HistoryProgressTest]类初始化方法ProjName.Data.Tests.HistoryTableHandlingTest.Init抛出异常 . System.InvalidOperationException:System.InvalidOperationException:实体框架提供程序类型'System.Data.Entity.SqlServer.SqlProviderServices,EntityFramework.SqlServer,Version = 6.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'的'Instance'成员没有返回一个继承自'System.Data.Entity.Core.Common.DbProviderServices'的对象 . 实体框架提供程序必须从此类继承,并且“实例”成员必须返回提供程序的单例实例 . 这可能是因为提供者不支持实体框架6或更高版本;有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882 .
这是我的MSTest项目的app.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
我想提到的另一件事是,我不使用NuGet的EntityFramework库,但它是克隆EntityFramework.HierarchyId(它也可以在NuGet中找到) .
1 回答
在我将所有测试重写为NUnit后,我得到了相同的结果 . 但似乎,这种行为的主要原因是,在构建代理MS Sql Server Express上没有正确安装 . 当我重新安装最新版本的SQL Express时,一切都开始起作用了 . 似乎系统缺少LocalDB的一些驱动程序或库 .
我希望这会帮助别人 .