无法从.NET类库xUnit测试加载Npgsql

时间:2018-05-02 03:26:19

标签: c# entity-framework xunit npgsql

我正在学习一些实体框架,并开始围绕它编写一些测试用例。

我遇到了一个问题,即我无法在测试用例中加载程序集,即使我可以在.net应用程序本身中这样做(并且程序集的版本相同)。

我得到的错误:

  

消息:System.IO.FileLoadException:无法加载文件或程序集   ' Npgsql.EntityFrameworkCore.PostgreSQL,版本= 2.0.2.0,   Culture = neutral,PublicKeyToken = 5d8b90d52f46fda7'或其中一个   依赖。强名称签名无法验证。该   装配可能已经被篡改,或者是延迟签署但没有   使用正确的私钥完全签名。 (HRESULT的例外情况:   0x80131045)

它适用于.net app

我开始让Windows窗体应用运行正常。 这是针对本地postgres DB使用SimpleInjector,EF Core,Npgsql。 我有这个工作得很好(数据库创建,迁移等),DataContext(我的DbContext)被加载如下:

DbContextOptionsBuilder builder = new DbContextOptionsBuilder<DataContext>();
DbContextOptions<DataContext> options = (DbContextOptions<DataContext>)builder.UseNpgsql(connectionString).Options;
            return new DataContext(options,NLog.LogManager.GetCurrentClassLogger());

我能够对数据库中的组织进行简单测试。目前,这是在Form1中完成的。

因此,在测试中(我遇到问题)

我将相同的依赖项添加到新的&#34;测试&#34;类库(EF Core,Npgsql等)。我也依赖于EntityFrameworkTest项目,所以我可以引用它的模型。

我已经简化了测试用例(OrgDBTest),以便它尝试在其构造函数中创建一个上下文。我已经这样做了,所以我知道我的问题与SimpleInjector无关。

我的期望是测试会运行,在其构造函数中创建一个DbContext。但是我无法加载程序集以便我可以创建我的DbContext ...以便我可以继续创建/玩测试。

代码在这里(非常小): https://github.com/scornflake/entityframework-learn

但是输了,因为看起来我在测试用例中做的和我在应用程序中一样,但是装配加载看起来有点不同。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我没有根本原因,但从xUnit切换到NUnit会使一切正常。我只能假设xUnit跑步者在装配加载/安全方面存在一些潜在的差异(我希望我知道它是什么,但我已经花了很多时间才到达这一点!)