我发现了几篇关于如何使用mstest实用程序执行代码UI测试的博客文章,但我需要从我的C#应用程序执行它们。我尝试了最简单的事情:我创建了一个控制台应用程序,添加了对
的引用我尝试从我的应用程序调用UI测试方法。我收到以下错误:
The following is not a valid technology name: MSAA. To search for a control, you must specify a valid technology name.
我尝试引用与UI测试相关的其他程序集,但错误保持不变。也许我应该添加到App.config以便能够运行测试?
答案 0 :(得分:3)
我正在使用bat文件执行编码的UI测试,您只需将CUIT测试.dll文件复制到您的应用程序并通过bat文件调用它来执行。 即使您可以使用测试代理从您所在的不同计算机上运行代码UI测试 没有Visual Studio。
我的bat文件如下所示:
从DLL运行所有测试方法:
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\mstest.exe" /testcontainer:"DLL_Location\CUIT_03.dll" /resultsfile:"ResultFile_Location\result.trx"
从DLL运行单一测试方法:
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\mstest.exe" /testcontainer:"DLL_Location\CUIT_03.dll" /test:"TestMethodName" /resultsfile:"ResultFile_Location\result.trx"
答案 1 :(得分:2)
您需要在执行编码的UI部分之前调用Playback.Initialize(),然后再调用Playback.Cleanup()。
答案 2 :(得分:1)
在C#中使用MSTest运行时遇到了类似的问题。我正在使用Selenium,因此我使用[TestClass]属性标记了我的基类。我需要CodedUI来测试文件上传。当我将其更改为[CodedUITest]时,它可以工作。
答案 3 :(得分:0)
如果从C#调用MSTest,您会解决问题吗?如果是,请MSDN post tells you how。
否则,我会尝试在MSTest中使用反汇编程序来查明它的作用以及它使用的引用。快速浏览一下,我看到了Microsoft.VisualStudio.QualityTools.ExecutionCommon以及Microsoft.VisualStudio.QualityTools.CommandLine中名为Executor的类。
请问,为什么你需要从C#调用CUIT?
答案 4 :(得分:0)
我相信你错过了一些参考资料,试试这个博客,这些都是你需要的参考资料:
c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\
Microsoft.VisualStudio.TestTools.UITesting.dll
Microsoft.VisualStudio.QualityTools.CodedUITestFramework.dll
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\image
Microsoft.VisualStudio.TestTools.UITest.CodeGeneration.dll
Microsoft.VisualStudio.TestTools.UITest.Framework.dll
Microsoft.VisualStudio.TestTools.UITest.Playback.dll
试试此博客:http://blogs.microsoft.co.il/shair/2010/07/15/running-codedui-test-from-another-application/
它列出了你需要的所有参考资料(尝试过,它适用于winforms(MSAA))。
答案 5 :(得分:0)
检查您的应用程序是否以32进程运行,因为编码的UI不能与64位进程一起使用,也不能在其中使用。
答案 6 :(得分:0)
嗨,我的工作是: 使用下面的代码==>
Playback.Initialize();
CockpitAutomate.CockpitAutomate c = new CockpitAutomate.CockpitAutomate();
c.RunCockpit();
Playback.Cleanup();