VS2013 Express单元测试FileNotFoundException

时间:2015-06-24 19:19:00

标签: c# entity-framework unit-testing visual-studio-2013

我正在开始一个新的解决方案,其中包含6个项目,2个类库,一个网站和一个单元测试项目。

我无法为其中一个类库设置单元测试。这个库使用实体框架,我想模拟数据库上下文来测试各种函数。这些函数在从网站和其他类库中引用时有效,但在单元测试项目中没有。

当我尝试运行引用该库的单元测试时,出现错误:

  

System.IO.FileNotFoundException:无法加载文件或程序集“ClassLibrary”,Version = 1.0.0.0,Culture = en-US,PublicKeyToken = null   或其中一个依赖项。系统找不到该文件   specified.WRN:程序集绑定日志记录已关闭。   要启用程序集绑定失败日志记录,请将注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)设置为1。   注意:程序集绑定失败日志记录会导致一些性能损失。   要关闭此功能,请删除注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog]。

现在错误非常简单,它无法找到类库的dll。然而,解决方案并非如此简单。我花了几个小时谷歌搜索和尝试不同的东西。这是我到目前为止所尝试的:

  1. DLL确实存在于它所说的位置。
  2. 将测试的体系结构更改为x64或x86什么都不做,类库设置为Any CPU
  3. 我尝试更改库和测试项目的所有引用以复制本地,但这没有帮助。
  4. 我尝试手动复制dll并更改参考点
  5. 可以从网站项目和其他类库
  6. 成功调用相同的库
  7. 我尝试打开程序集绑定日志记录,但它没有提供任何新信息
  8. 目前整个解决方案都很简陋,所以我对任何建议都很灵活。我在我的智慧和谷歌搜索结束。如果您想了解更多信息,请与我们联系。

    感谢您的帮助,

    克里斯

1 个答案:

答案 0 :(得分:2)

Microsoft Unit Testing failure, unable to load DLL to test类似,如果您将AssemblyCulture设置为任何内容,则引用将不再起作用。我认为这个问题/答案可以保持不变,因为我无法通过搜索找到另一个。我很幸运能在相关部分偶然发现它。

基本上:确保在单元测试项目和正在测试的项目的AssemblyInfo.cs中,AssemblyCulture是一个空字符串:

[assembly: AssemblyCulture("")]