MSTest拒绝运行64位?

时间:2013-07-17 16:35:39

标签: c# .net 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中的“主机设置”页面的屏幕截图 enter image description here

实验

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

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

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

3 个答案:

答案 0 :(得分:19)

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

enter image description here

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

enter image description here

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

你会在“C:\ Program Files(x86)\ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \”中找到 vstest.console.exe

请注意以下步骤

  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
  4. 注意:Test.Automation.Specs.dll是您的测试项目,您需要定义完整路径

    我希望这个帮助

答案 1 :(得分:5)

我刚才遇到了同样的问题。以下是解决问题所需遵循的步骤。

  1. 将单位测试的默认处理器架构从x86切换到x64:转到测试 - >测试设置 - &gt;默认处理器架构 - &gt; x64。 Screenshot for changing the default processor architecture to x64 for test settings.
  2. 将单元测试项目的Build设置更改为x64。Screenshot for changing the build settings to x64.
  3. 清理解决方案,然后重建解决方案。您的单元测试现在应该出现在测试资源管理器中,您不应再遇到此问题了。
  4. <强>参考

    1. Link to MSDN reference which explains how to resolve the issue

答案 2 :(得分:3)

这有点超出我的范围,但两个项目的配置设置都设置正确,对吧?你有他们设置为AnyCPU或x64构建?

只是试着把奥卡姆的剃刀弄出来......我知道我已经被配置设置挫败了太多次,VS只是神奇地决定改变我。