如何在外部启动自动化测试(Codedui)?

How do I start an automated test (Codedui) externally?

CodedUI 测试使用 QualityTools 命名空间的 UnitTest 适配器,如此堆栈跟踪所示,在使用 TestExplorer(调试测试选择)进入测试时。

Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter.dll!Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExecuter.DefaultTestMethodInvoke(object[] args)   Unknown
Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter.dll!Microsoft.VisualStudio.TestTools.TestTypes.Unit.DefaultTestMethodDecorator.Invoke(object[] args)  Unknown
Microsoft.VisualStudio.QualityTools.CodedUITestFramework.dll!Microsoft.VisualStudio.TestTools.UITesting.CodedUITestInvoker.Invoke(object[] parameters)  Unknown
Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter.dll!Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExecuter.RunTestMethod()  Unknown
Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter.dll!Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExecuter.ExecuteTest()    Unknown
Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter.dll!Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExecuter.Execute(Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestResult result)   Unknown
Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter.dll!Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestRunner.ExecuteSingleTest(Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExecuter executer, Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestResult result, Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement test, Microsoft.VisualStudio.TestTools.Execution.ITestContext testContext, Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapterContext userContext, bool isLoadTest)    Unknown
Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter.dll!Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestRunner.ExecuteSingleTest(Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestExecuter executer, Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement test, Microsoft.VisualStudio.TestTools.Execution.ITestContext testContext, Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapterContext userContext, bool isLoadTest)   Unknown
Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter.dll!Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestRunner.Run(Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestElement test, Microsoft.VisualStudio.TestTools.Execution.ITestContext testContext, bool isLoadTest, bool useMultipleCpus)  Unknown
[AppDomain (QTAgent32.exe, #1) -> AppDomain (TestAppDomain: adad0b78-8b62-491f-8c88-b41c3e647a1f, #2)]  
Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter.dll!Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapter.Run(Microsoft.VisualStudio.TestTools.Common.ITestElement testElement, Microsoft.VisualStudio.TestTools.Execution.ITestContext testContext, bool isLoadTest)   Unknown
Microsoft.VisualStudio.QualityTools.Tips.UnitTest.Adapter.dll!Microsoft.VisualStudio.TestTools.TestTypes.Unit.UnitTestAdapter.Run(Microsoft.VisualStudio.TestTools.Common.ITestElement testElement, Microsoft.VisualStudio.TestTools.Execution.ITestContext testContext)    Unknown
Microsoft.VisualStudio.QualityTools.AgentObject.dll!Microsoft.VisualStudio.TestTools.Agent.AgentExecution.CallAdapterRunMethod(object obj)  Unknown

TestContext 属性有一些公开的属性,我们可以更改它们的一些行为。

每个 CODEDUI class 必须使用此 attribute 以便测试运行器和负载测试 et.al。 "Find" 程序集中的测试。

这似乎是 "CodedUI" 框架的运作方式减去一个小细节。进入 Codedui 测试后,一组步骤将同步执行。在执行最后一步时,"run" 的实例将自动终止。如果没有断言,测试会自动通过。等等等等

但是控制测试何时结束呢?有谁知道挂钩异步任务(隐含延迟回调)并在继续发生之前阻止测试完成的方法。

我猜测和测试表明,CodeUI目前支持的是一切都必须是同步的。

这是我的想法,我可以从测试运行器开始异步测试。测试运行器完成并且此测试通过,表明异步测试已开始。完成后我可以重新启动自动化测试。

所以问题归结为:如何在外部启动自动化测试?这将导致工作设计,因为我知道当测试运行器完成时,任何异步测试都被标记为完成。它甚至会终止所有异步工作...这意味着这些线程必须在测试运行程序进程下。

引用程序集并调用测试方法。

@回声关闭 设置最大值=.设置计数=. echo 开始测试执行 回声 ======================= "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\mstest.exe" /testcontainer:E:\Practice\TestingSample\TestingSample\bin\Debug\TestingSample.dll /test:fn_TestMethod1 /test:fn_TestMethod2 /resultsfile:E:\SachintestResAut3.trx"

"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\mstest.exe" /testcontainer:E:\Practice\TestingSample\TestingSample\bin\Debug\TestingSample.dll /test:fn_TestMethod2 /resultsfile:E:\SachintestResAut3.trx"

echo 全部完成 @退出