MSTest拒绝运行64位?

Cod*_*ior 15 .net c# 64-bit mstest outlook-redemption

我正在为使用Outlook Redemption的应用程序编写测试,该应用程序绝对必须运行64位(它连接到Windows MAPI和Outlook x64).不幸的是,我不能为我的生活让它在64位运行测试.我试过使用一个.runsettings文件(编辑表示64位)和一个.testsettings文件(也编辑过),最后我选择了Test>TestSettings>Default Processor Architecture>64-bit,但无济于事.

每次,System.Environment.Is64BitProcess都为false,当我加载dll连接到Outlook和MAPI时,我得到了可怕的COM异常:Wrong OS or OS version for application (Exception from HRESULT: 0x800401FA (CO_E_WRONGOSFORAPP))这表示安装了64位Outlook,并且尝试访问它的进程是32位.

我在更改设置后重新启动了VS 2012,因为我已经读过可能需要重新启动的地方.有没有人有任何其他建议?我可以把它写成一个运行非正式测试并报告其状态的控制台应用程序,但我的下一步是将这些测试集成到自动构建中.任何帮助将不胜感激.

编辑

.testsettings中的主机设置页面的屏幕截图 在此输入图像描述

实验

有趣的是,我做了一个小实验.我用一个控制台应用项目创建了一个新的解决方案.我在那里放了一个公共方法,只是返回true.当我运行控制台应用程序并暂停执行时,我看起来确实运行了64位; 没问题.然后我添加了一个测试项目,创建了一个调用该方法的测试.我还添加var is64 = Environment.Is64bitProcess并在其后添加断点.

可以预见,在不改变任何选项的情况下,is64是错误的.我从测试下拉列表中选择了64位默认架构,然后清理了解决方案,并再次运行测试,结果相同,运行32位.我重新启动VS2012,清理,构建,结果相同.我创建了一个testsettings文件,并在Test菜单中引用它,清理构建,同样,重新启动,清理,构建相同.我创建了一个runsettings文件,set <TargetPlatform>x64</TargetPlatform>,在测试菜单中引用它,再次运行它,并得出相同的结果.QTAgent32.exe继续运行该过程,绝对拒绝注意我的运行64位的要求.

我发誓,如果我必须删除QTAgent32.exe并将QTAgent重命名为该名称,我会的.当我想要顽固的时候,我不会把我的意愿压在计算机的喉咙上.如果你不想看到我虐待工作站,请有人告诉我出了什么问题.想想电脑.

小智 20

如果您使用VS2012,那么您将能够通过以下测试设置选择您的平台x64;

在此输入图像描述

在这个例子中,我指的是.runsettings文件.设置是

在此输入图像描述

但是如果希望通过命令行运行测试,则需要使用vstest.console.exe而不是MSTEST,因为它不支持x64 test.dlls

你会发现vstest.console.exe在"C:\ Program Files文件(x86)的\ Common7\IDE\CommonExtensions \微软\ TestWindow \"

请注意以下步骤

  1. 打开CMD
  2. 导航到"C:\ Program Files(x86)\ Common7\IDE\CommonExtensions\Microsoft\TestWindow \"
  3. 执行vstest.console.exe"C:\ Projects\Test\Test.Automation.Specs.dll"/ InIsolation / platform:x64

注意:Test.Automation.Specs.dll是您的测试项目,您需要定义完整路径

我希望这有帮助


use*_*932 5

我刚才遇到了同样的问题。您可以按照以下步骤解决问题。

  1. 将单元测试的默认处理器体系结构从x86切换到x64:转到“测试”->“测试设置”->“默认处理器体系结构”->“ x64”。屏幕截图,用于将默认处理器体系结构更改为x64以进行测试设置。
  2. 将单元测试项目的“生成”设置更改为x64。将构建设置更改为x64的屏幕截图。
  3. 清洁溶液,然后重新构建溶液。现在,您的单元测试应该显示在测试浏览器中,并且您不再应该遇到此问题。

参考文献

  1. 链接到MSDN参考,该参考说明了如何解决此问题

  • 我正在使用Visual Studio 2015。 (2认同)

nat*_*has 3

这有点超出了我的范围,但是两个项目的配置设置都设置正确,对吧?您是否已将它们设置为针对 AnyCPU 或 x64 进行构建?

只是想用奥卡姆剃刀来解决...我知道我已经因为 VS 神奇地决定改变我的配置设置而感到沮丧太多次了。