可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I found several blog posts about how to execute code UI tests using mstest utility, but I need to execute them from my C# application. I tried the simplest thing: I created a console application, added references to
- Microsoft.VisualStudio.TestTools.UITest.Logging.dll
- Microsoft.VisualStudio.TestTools.UITest.Playback.dll
- Microsoft.VisualStudio.TestTools.UITesting.dll
and I tried calling UI test method from my application. I got the following error:
The following is not a valid technology name: MSAA. To search for a control, you must specify a valid technology name.
I tried referencing other assemblies which are related to UI testing, but the error stays the same. Maybe there's something that I should add to App.config to be able to run the tests?
回答1:
I am executing the coded UI test with a bat file, you can simply copy the CUIT test .dll file to your application and call it by a bat file to execute.
Even you can use Test Agents to run the Code UI Test from different machines, where you
don't have Visual Studio.
my bat file looks like this:
Run All Test methods from 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"
Run Single Test Method From 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"
回答2:
You need to call Playback.Initialize() before you execute the coded UI part, and then Playback.Cleanup() after.
http://social.msdn.microsoft.com/forums/wpapps/zh-cn/914e0ecb-6917-43ff-baf6-f30acc6469d3/unable-to-run-a-coded-ui-test-method-when-called-from-a-console-application-project-in-vs2012
http://blogs.microsoft.co.il/blogs/shair/archive/2010/07/15/running-codedui-test-from-another-application.aspx
回答3:
I had a similar problem when running with MSTest in C#. I'm using Selenium, so I marked my base class with the [TestClass] attribute. I need CodedUI to test file uploading. When I changed it to [CodedUITest] it worked.
回答4:
Will you solve your problem if you invoke MSTest from C#? If so, this MSDN post tells you how.
Otherwise, I would try to use a disassembler in MSTest to find out what it does and what references it uses. A quick look at it pointed me to Microsoft.VisualStudio.QualityTools.ExecutionCommon as well as a class called Executor in Microsoft.VisualStudio.QualityTools.CommandLine.
May I ask, why do you need to invoke a CUIT from C#?
回答5:
I believe you're missing some references, try this blog, this are all the references you'll need:
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
Try this blog: http://blogs.microsoft.co.il/shair/2010/07/15/running-codedui-test-from-another-application/
it lists all the referenecs you need (tried ot and it works for winforms (MSAA)).
回答6:
Check that your application is running as 32 process , because coded UI does not work with 64 bit processes and cannot be consumed in them.
回答7:
Hi Its working in my case:
use below code==>
Playback.Initialize();
CockpitAutomate.CockpitAutomate c = new CockpitAutomate.CockpitAutomate();
c.RunCockpit();
Playback.Cleanup();