简体   繁体   中英

Executing coded UI test from a standalone application

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?

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"

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.

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#?

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)).

检查您的应用程序是否以32进程运行,因为编码的UI不能与64位进程一起使用,并且无法在其中使用。

Hi Its working in my case: use below code==>

Playback.Initialize();
CockpitAutomate.CockpitAutomate c = new CockpitAutomate.CockpitAutomate();
c.RunCockpit();
Playback.Cleanup();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM