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 包

其余的是您在创建项目时获得的默认 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" />