Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP核心标识-内存中的单元测试错误_C#_Unit Testing_Asp.net Identity_Visual Studio 2017_In Memory Database - Fatal编程技术网

C# ASP核心标识-内存中的单元测试错误

C# ASP核心标识-内存中的单元测试错误,c#,unit-testing,asp.net-identity,visual-studio-2017,in-memory-database,C#,Unit Testing,Asp.net Identity,Visual Studio 2017,In Memory Database,我正在尝试对我的一个项目进行单元测试,该项目在VS2017中使用ASP标识(EF核心) 我遇到的问题是,当我在内存中使用EF cores创建DB上下文时,会出现以下错误- 消息:System.IO.FileLoadException:无法加载文件或程序集“Microsoft.Extensions.DependencyInjection.Abstractions,Version=1.1.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”或其依赖

我正在尝试对我的一个项目进行单元测试,该项目在VS2017中使用ASP标识(EF核心)

我遇到的问题是,当我在内存中使用EF cores创建DB上下文时,会出现以下错误-

消息:System.IO.FileLoadException:无法加载文件或程序集“Microsoft.Extensions.DependencyInjection.Abstractions,Version=1.1.0.0,Culture=neutral,PublicKeyToken=adb9793829ddae60”或其依赖项之一。定位的程序集清单定义与程序集引用不匹配。(来自HRESULT的异常:0x8013100)

我正在使用以下nuget包

  • Microsoft.AspNetCore.Identity.EntityFrameworkCore-1.1.2
  • Microsoft.EntityFrameworkCore.InMemory-1.1.2
Rest是创建项目时获得的默认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);
}
公共类TestDbContext:IdentityDbContext
{
公共TestDbContext(DbContextOptions选项):基本(选项)
{
}
}
公共类用户:IdentityUser
{
}
[事实]
公共void Test1()
{
var builder=new DbContextOptionsBuilder();
builder.UseInMemoryDatabase();
var context=newtestdbcontext(builder.Options);
}

根据我的观察和一些研究,我认为这与XUnit测试运行程序有关。这是我的工作逻辑

ops存储库中依赖于Microsoft.Extensions.DependencyInjection.Abstractions的所有程序集参考版本1.1.1(这是通过在引用下手动查看依赖项并在生成后检查所有输出DLL来验证的)

使用ReSharpers test runner运行测试,一切正常。

使用NuGet数据包managed
xunit.runner.visualstudio运行测试时抛出ops异常。。。有东西正试图加载Microsoft.Extensions.DependencyInjection.Abstracts
1.1.0版,但仅当使用
xunit.runner.visualstudio运行时

做一些研究这似乎是测试运行者以前的问题,但是安装NuGet package
Microsoft.DotNet.InternalAbstractions
和或
Microsoft.NET.test.Sdk
的普遍接受的解决方案似乎都不起作用(单独或相互配合)

在单元测试中运行此功能的当前解决方案。。。降级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.0版)并删除了1.1.1版的所有输出DLL,测试就使用了本机测试运行程序(我不得不手动删除这些,一个干净的文件似乎没有删除它们)

我知道op可能不想降级,但希望这能让我们了解抛出异常的原因,并有助于确定下一个最佳的行动方案

编辑: 我尝试如下所示将绑定重定向添加到
.csproj
文件,但仍然不起作用

  <PropertyGroup>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
  </PropertyGroup>

真的
真的

根据我的观察和一些研究,我认为这与XUnit测试运行程序有关。以下是我的工作逻辑

ops存储库中依赖于Microsoft.Extensions.DependencyInjection.Abstractions的所有程序集
参考版本1.1.1(这是通过在引用下手动查看依赖项并在生成后检查所有输出DLL来验证的)

使用ReSharpers test runner运行测试,一切正常。

使用NuGet数据包managed
xunit.runner.visualstudio运行测试时抛出ops异常…有东西试图加载
Microsoft.Extensions.DependencyInjection.Abstracts
1.1.0版,但仅当使用
xunit.runner.visualstudio运行时

做一些研究这似乎是测试运行者以前的问题,但是安装NuGet package
Microsoft.DotNet.InternalAbstractions
和或
Microsoft.NET.test.Sdk
的普遍接受的解决方案似乎都不起作用(单独或相互配合)

当前在单元测试中运行此功能的解决方案…降级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.0版)并删除了1.1.1版的所有输出DLL,测试就使用了本机测试运行程序(我不得不手动删除这些,一个干净的文件似乎没有删除它们)

我知道op可能不想降级,但希望这能让我们了解抛出异常的原因,并有助于确定下一个最佳的行动方案

编辑: 我尝试如下所示将绑定重定向添加到
.csproj
文件,但仍然不起作用

  <PropertyGroup>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
  </PropertyGroup>

真的
真的

在vstest GitHub repo中跟踪此问题:

在vstest GitHub repo中跟踪此问题:

升级到Microsoft.NET.Test.Sdk的最新版本解决了此问题


升级到Microsoft.NET.Test.Sdk的最新版本可以解决此问题



您是如何尝试创建模拟EF上下文和数据库集的?您是否使用类似Moq的模拟框架?您是否有一些示例代码?抱歉,刚才看到了示例项目,我有一个问题