ASP Core Identity - 单元测试内存错误
ASP Core Identity - Unit test In Memory Error
我正在尝试对我的一个项目进行单元测试,该项目在 VS2017 中使用 ASP 身份(EF 核心)。
我遇到的问题是,当我在内存中使用 EF 内核创建我的数据库上下文时,它会爆炸并出现以下错误 -
Message: System.IO.FileLoadException : Could not load file or assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
我正在使用以下 nuget 包
- Microsoft.AspNetCore.Identity.EntityFrameworkCore - 1.1.2
- Microsoft.EntityFrameworkCore.InMemory - 1.1.2
其余的是您在创建项目时获得的默认 xunit 包。
任何帮助将不胜感激,请花很多时间尝试找出问题所在:/
这是单元测试代码:
public class TestDbContext : IdentityDbContext<User>
{
public TestDbContext(DbContextOptions<TestDbContext> options) : base(options)
{
}
}
public class User : IdentityUser
{
}
[Fact]
public void Test1()
{
var builder = new DbContextOptionsBuilder<TestDbContext>();
builder.UseInMemoryDatabase();
var context = new TestDbContext(builder.Options);
}
根据我的观察和一些研究,我认为这与 XUnit 测试有关 运行ner。这是我的工作逻辑。
ops 存储库中依赖于 Microsoft.Extensions.DependencyInjection.Abstractions
参考版本 1.1.1 的所有程序集(这是通过手动查看引用下的依赖项并在构建后检查所有输出 DLL 来验证的)。
运行 使用 ReSharpers 测试的测试 运行ner,一切正常。
运行 使用 NuGet 数据包管理的测试 xunit.runner.visualstudio
抛出操作异常...有些东西正在尝试加载 Microsoft.Extensions.DependencyInjection.Abstractions
版本 1.1.0 但仅当 运行 使用 xunit.runner.visualstudio
做一些研究这似乎是之前测试 运行ner 的一个问题,但是安装 NuGet 包 Microsoft.DotNet.InternalAbstractions
和/或 Microsoft.NET.Test.Sdk
两者都不是普遍接受的解决方案似乎有效(单独或与彼此结合)
在单元测试中获得此 运行ning 的当前解决方案...降级 EF,以便对 Microsoft.Extensions.DependencyInjection.Abstractions
的最高依赖性是版本 1.1.0
一旦我将所有 EF 库降级到版本 1.1.1(Microsoft.AspNetCore.Identity.EntityFrameworkCore
版本 1.1.1 取决于 Microsoft.Extensions.DependencyInjection.Abstractions
版本 1.1,测试就可以使用本机测试 运行ner 进行。 0) 并删除了版本 1.1.1 的所有输出 DLL(我不得不手动删除这些,清理似乎没有删除它们)
我知道 op 可能不想降级,但希望这可以深入了解抛出异常的原因,并帮助确定下一个最佳行动方案。
编辑:
我尝试将绑定重定向添加到 .csproj
文件,如下所示,但这仍然不起作用。
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
这个问题正在 vstest GitHub 回购中被跟踪:https://github.com/Microsoft/vstest/issues/936
升级到最新版本 Microsoft.NET.Test.Sdk
解决了问题。
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
我正在尝试对我的一个项目进行单元测试,该项目在 VS2017 中使用 ASP 身份(EF 核心)。
我遇到的问题是,当我在内存中使用 EF 内核创建我的数据库上下文时,它会爆炸并出现以下错误 -
Message: System.IO.FileLoadException : Could not load file or assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
我正在使用以下 nuget 包
- Microsoft.AspNetCore.Identity.EntityFrameworkCore - 1.1.2
- Microsoft.EntityFrameworkCore.InMemory - 1.1.2
其余的是您在创建项目时获得的默认 xunit 包。
任何帮助将不胜感激,请花很多时间尝试找出问题所在:/
这是单元测试代码:
public class TestDbContext : IdentityDbContext<User>
{
public TestDbContext(DbContextOptions<TestDbContext> options) : base(options)
{
}
}
public class User : IdentityUser
{
}
[Fact]
public void Test1()
{
var builder = new DbContextOptionsBuilder<TestDbContext>();
builder.UseInMemoryDatabase();
var context = new TestDbContext(builder.Options);
}
根据我的观察和一些研究,我认为这与 XUnit 测试有关 运行ner。这是我的工作逻辑。
ops 存储库中依赖于 Microsoft.Extensions.DependencyInjection.Abstractions
参考版本 1.1.1 的所有程序集(这是通过手动查看引用下的依赖项并在构建后检查所有输出 DLL 来验证的)。
运行 使用 ReSharpers 测试的测试 运行ner,一切正常。
运行 使用 NuGet 数据包管理的测试 xunit.runner.visualstudio
抛出操作异常...有些东西正在尝试加载 Microsoft.Extensions.DependencyInjection.Abstractions
版本 1.1.0 但仅当 运行 使用 xunit.runner.visualstudio
做一些研究这似乎是之前测试 运行ner 的一个问题,但是安装 NuGet 包 Microsoft.DotNet.InternalAbstractions
和/或 Microsoft.NET.Test.Sdk
两者都不是普遍接受的解决方案似乎有效(单独或与彼此结合)
在单元测试中获得此 运行ning 的当前解决方案...降级 EF,以便对 Microsoft.Extensions.DependencyInjection.Abstractions
的最高依赖性是版本 1.1.0
一旦我将所有 EF 库降级到版本 1.1.1(Microsoft.AspNetCore.Identity.EntityFrameworkCore
版本 1.1.1 取决于 Microsoft.Extensions.DependencyInjection.Abstractions
版本 1.1,测试就可以使用本机测试 运行ner 进行。 0) 并删除了版本 1.1.1 的所有输出 DLL(我不得不手动删除这些,清理似乎没有删除它们)
我知道 op 可能不想降级,但希望这可以深入了解抛出异常的原因,并帮助确定下一个最佳行动方案。
编辑:
我尝试将绑定重定向添加到 .csproj
文件,如下所示,但这仍然不起作用。
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
这个问题正在 vstest GitHub 回购中被跟踪:https://github.com/Microsoft/vstest/issues/936
升级到最新版本 Microsoft.NET.Test.Sdk
解决了问题。
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />