C# 的 UnitTest 的 BadImageFormatException

问题描述 投票:0回答:1

我正在 C# 上使用此代码,一开始我无法运行它,因为它抛出了以下异常:“BadImageFormatException ERROR (HRESULT 0x8007000B)”。我通过简单更改解决了这个问题:工具 -> 选项 -> 项目和解决方案 -> Web 项目 -> 取消选中“对网站和项目使用 64 位版本的 IIS Express”

此后就可以了。

但是,如果我尝试测试我的单元测试,它们都会失败并检索相同的异常:“错误:System.InvalidOperationException:配置无效。创建 IAuthenticator 类型的实例失败。 IAuthenticator 类型的注册委托引发了异常。错误(HRESULT 0x8007000B)'

如何解决单元测试部分的问题?

(编辑) 这是我所做的更改,但并没有解决问题

Target Platform

c# unit-testing x86 invalidoperationexception badimageformatexception
1个回答
0
投票

如果正在测试的代码是为 x86 平台编译的,但单元测试项目是为 x64 平台编译的,则可能会发生这种情况,反之亦然。

确保单元测试项目的目标平台与被测试代码的目标平台相同。您可以通过右键单击解决方案资源管理器中的项目并选择属性来更改项目的平台。然后,转到“构建”选项卡并选择“平台目标”下拉列表。

refer this image

更新: 如果是单例,则在应用程序的整个生命周期中仅创建一个服务实例。如果 IAuthenticator 服务注册到 Transient 生命周期范围,则将为每个请求创建一个新的服务实例。此范围中的范围case 是单元测试。运行单元测试时,会创建一个新范围。这意味着将为每个单元测试创建 IAuthenticator 服务的新实例,但如果您将其设置为单例范围,则会抛出错误。

© www.soinside.com 2019 - 2024. All rights reserved.