【问题标题】:unable to nunit test my log4net wrapper class无法对我的 log4net 包装类进行 nunit 测试
【发布时间】:2012-05-03 01:07:15
【问题描述】:

我为 log4net 编写了一个包装类。此包装类与 asp.net Web 应用程序一起正常工作。现在我正在尝试使用 NUNIT 测试我的包装类方法。 在包装类项目中,我将 log4net DLL 的“复制本地”设置为 True。 NUNIT 项目和包装类都使用 log4net 1.2.10.0。

这个包装类可以在我单独的 asp.net web 项目中正常工作,但有些方法不适用于我的 nunit 测试项目。

当我尝试运行基本测试时,出现以下异常

System.BadImageFormatException:无法加载文件或程序集 'log4net,版本=1.2.10.0,文化=中性, PublicKeyToken=692fbea5521e1304' 或其依赖项之一。一个 试图加载格式不正确的程序。

我在 Resharper for VS2010 中运行这些测试

更新

刚刚用 log4net.dll 版本 1.2.11.0 更新了我的包装器和测试项目,一切都开始神奇地工作了!!!我不知道这个最新版本如何解决 1.2.10.0 一直失败的问题

【问题讨论】:

  • 您正在加载错误的图像,例如在 x86 架构上使用 x64,反之亦然
  • 更新了我的问题。为什么 log4net.dll 可以与 asp.net web 项目一起使用?请告诉我。
  • 如果您从测试项目中添加对 log4net 的引用,它仍然会给您错误吗?
  • 只是在测试项目中添加引用不会给出任何错误。当我运行测试时,我得到了错误。

标签: c# unit-testing tdd nunit log4net


【解决方案1】:

您似乎在 64 位系统上加载 32 位 DLL。您应构建针对 32 位架构的测试 DLL。

现有问题中描述了流程:Using a 32 bit dll on a 64 bit machine

【讨论】:

  • 为什么这个带有 log4net(32 位 DLL)的包装类可以与我的 asp.net Web 应用程序一起使用?
  • 可能在 IIS 应用程序池中启用了 32 位兼容性(这使得 32 位 DLL 工作)或者 log4net 的位可以正常,并且有另一个 DLL 或应用程序正在损坏 64 位链.例如,在测试不同的环境时,您是否使用 NUnit 获得了相同的结果?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-25
  • 1970-01-01
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多