如何从外部开始自动化测试(Codedui)?

时间:2015-03-25 14:38:16

标签: c# unit-testing mstest coded-ui-tests

使用TestExplorer(调试测试选择)输入测试时,CodedUI测试使用QualityTools命名空间的UnitTest Adapter,如此堆栈跟踪中所示。

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类必须使用此attribute才能使用Test Runner和Load Tests et.al.找到"发现"装配中的测试。

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

但是如何控制测试结束时呢?有没有人知道一种方法来挂钩异步任务(暗示延迟回调)并阻止测试完成,直到继续发生。

我猜测并且测试表明CodeUI的当前支持是一切都必须是同步的。

这是我对此的想法,我可以从测试运行器开始Async测试。测试运行器完成,此测试通过指示异步测试已启动。完成后,我可以重新开始自动测试。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

@echo off set max = .set count =。 echo开始测试执行 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"

回应所有完成 @exit