我正在为使用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文件,设置<TargetPlatform>x64</TargetPlatform>
,在测试菜单中引用它,再次运行它,并得出相同的结果。 QTAgent32.exe继续运行该过程,绝对拒绝注意我的运行64位的要求。
我发誓,如果我必须删除QTAgent32.exe并将QTAgent重命名为该名称,我会的。当我想要顽固的时候,我不会把我的意愿压在计算机的喉咙上。如果你不想看到我虐待工作站,请有人告诉我出了什么问题。想想电脑。
答案 0 :(得分:19)
如果您使用VS2012,那么您将能够通过以下测试设置选择您的平台x64;
在这个例子中,我指的是.runsettings文件。 设置
但是如果希望通过命令行运行测试,则需要使用 vstest.console.exe 而不是MSTEST,因为它不支持x64 test.dlls
你会在“C:\ Program Files(x86)\ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow \”中找到 vstest.console.exe
请注意以下步骤
注意:Test.Automation.Specs.dll是您的测试项目,您需要定义完整路径
我希望这个帮助
答案 1 :(得分:5)
我刚才遇到了同样的问题。以下是解决问题所需遵循的步骤。
答案 2 :(得分:3)
这有点超出我的范围,但两个项目的配置设置都设置正确,对吧?你有他们设置为AnyCPU或x64构建?
只是试着把奥卡姆的剃刀弄出来......我知道我已经被配置设置挫败了太多次,VS只是神奇地决定改变我。