18

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

每次,System.Environment.Is64BitProcess 都是假的,当我加载 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 菜单中引用它,clean build,same,restart,clean,build same。我创建了一个 runsettings 文件 set <TargetPlatform>x64</TargetPlatform>,在测试菜单中引用了它,再次运行它,并得出了相同的结果。QTAgent32.exe 继续运行该进程,并且绝对拒绝听从我要求它运行 64 位的要求。

我发誓,如果我必须删除 QTAgent32.exe 并将 QTAgent 重命名为该名称,我会的。当它想要固执时,我并没有把我的愿望塞进电脑的喉咙里。请,如果您不想看到我虐待工作站,请有人告诉我出了什么问题。想想电脑。

4

3 回答 3

22

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

在此处输入图像描述

在此示例中,我指的是 .runsettings 文件。设置是

在此处输入图像描述

但是如果希望通过命令行运行您的测试,您需要使用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

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

我希望这有帮助

于 2015-04-16T08:18:36.880 回答
9

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

  1. 将单元测试的默认处理器架构从 x86 切换到 x64:转到测试->测试设置->默认处理器架构->x64。将默认处理器架构更改为 x64 以进行测试设置的屏幕截图。
  2. 将单元测试项目的构建设置更改为 x64。将构建设置更改为 x64 的屏幕截图。
  3. 清理解决方案,然后重建解决方案。您的单元测试现在应该显示在测试资源管理器中,并且您不应再遇到此问题。

参考

  1. 链接到 MSDN 参考,其中解释了如何解决问题
于 2017-05-15T05:47:46.020 回答
3

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

只是想用奥卡姆剃刀把它弄出来……我知道我已经对 VS 神奇地决定改变我的配置设置感到沮丧太多次了。

于 2013-08-01T14:42:26.583 回答