单元测试失败,“无法加载文件或程序集”System.Net.Http,Version = 4.1.1.0'

时间:2017-01-11 20:25:34

标签: unit-testing asp.net-core moq xunit

我搜索并发现了类似的问题,但给出的答案对我不起作用。

这是.NET Core特有的。我正在用Xunit和Moq编写单元测试,我得到的错误是

  

抛出异常:'System.IO.FileNotFoundException'

     

其他信息:无法加载文件或程序集   'System.Net.Http,Version = 4.1.1.0,Culture = neutral,   PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。该   系统找不到指定的文件。

My Test项目的project.json文件如下所示:

{
   "version": "1.0.0",
   "buildOptions": {
      "debugType": "portable"
   },
   "dependencies": {
      "xunit": "2.2.0-beta2-build3300",
      "dotnet-test-xunit": "2.2.0-preview2-build1029",
      "My.App.DataAccess": "1.0.0",
      "My.App.Domain": "1.0.0",
      "My.App.Services": "1.0.0",
      "My.App.WebApi": "1.0.0",
      "Microsoft.AspNetCore.TestHost": "1.1.0",
      "Moq": "4.5.30"
   },
   "testRunner": "xunit",

   "frameworks": {
      "net462": {}
   }
}

只有单元测试失败。主要应用程序工作得很好。我已经尝试手动强制System.Net进入project.json,但它坚持安装4.3.0。我不确定它在哪里需要4.1.1.0。

编辑:我注意到如果我将System.Net.Http.dll从WebApi项目bin复制到Test项目bin,一切正常。现在,测试项目本身不使用System.Net.Http命名空间中的任何内容 - 只有在WebApi项目中测试的方法才引用它。

Test项目是否应该将System.Net.Http.dll复制到它的bin文件夹中?如果是这样,为什么在构建过程中没有发生这种情况?

1 个答案:

答案 0 :(得分:0)

这可能与此有关:https://github.com/dotnet/corefx/issues/9846

我建议您更新到VS 2017并为System.Net.Http程序集执行绑定重定向。