我有一个Visual Studio解决方案,我使用MSTest进行单元测试,并希望使用ReSharper Testrunner,因为我认为Visual Studio Test Explorer非常难以使用。我的整个解决方案是为x64构建的,因为我有一些专门为x64编译的依赖程序集,不适用于x86。
我的单元测试在VS Test Explorer中正常运行,但它们在ReSharper Testrunner中失败。
在点击单元测试的第一行之前,抛出以下异常:
无法输入 xxx.xxx.xxx 类型。错误:System.BadImageFormatException:Die Datei oder Assembly“file:/// D:\ path \ to \ unit \ test \ project \ bin \ Debug \ xxx.xxx.xxx .dll”oder eine Abhängigkeitdavonwurde nicht gefunden。 Es wurde versucht,eine Datei mit einem falschen格式zu laden。
很抱歉德语例外。它只是一个'典型的'BadImageFormatException,其中 xxx.xxx.xxx 是我的单元测试项目的类型。 Stacktrace表示从
抛出异常Microsoft.VisualStudio.TestPlatform.MSTestFramework.TypeCache.LoadType(String typeName,String assemblyName)
我知道stackoverflow上已经有很多类似的问题了,但我已经尝试了所有可能的解决方案(没有任何影响),因此我认为我的问题出在其他地方。
到目前为止我尝试和检查的内容:
测试资源管理器测试运行正常,但ReSharper没有,但两者都已设置为x64,这令人恼火。我错过了我需要修改的具体设置吗?或者将ReSharper与MSTest结合使用时,它们是否存在一些已知问题?我也可以考虑使用nUnit,但我需要修改所有测试,所以最好还是留在MSTest。
另外一些关于版本和内容的信息(不知道它是否有帮助):
答案 0 :(得分:1)
经过一些额外的研究后,我在ReSharper社区找到了similar post,表明ReSharper已配置为默认情况下在应用程序的MetaData中创建和使用testsettings文件,不配置为使用x64架构。我必须在我的解决方案上创建一个自定义TestSettings文件(放在解决方案项下),将其设置为强制在x64中运行,然后编辑ReSharper设置以使用此自定义TestSettings文件而不是默认文件。我仍然不知道为什么ReSharper没有使用为MSTest指定的默认处理器架构,也忽略了我在ReSharper设置中明确指定的设置。
但无论如何它现在正在工作。