2014-09-11 67 views
0

目前我正在使用UIAutomator来测试我们的应用程序,UIAutomator可以访问所有UI元素。通过非UI机制在Android App和UIAutomator之间进行通信

通常用附加代码显示对话框,指示成功完成测试用例(即由UIAutomator调用的操作),以通知UIAutomator继续下一个测试用例。

负责显示对话框的代码不会被提交到存储库并作为补丁进行维护,并且不允许在存储库中提交。 因此,无论何时我们想要执行UIAutomator测试,我们都会使用补丁中的其他代码构建APK。

我的问题:是否有任何其他方式与UIAutomator沟通有关成功完成测试用例(即应用程序已完成UIAutomator调用的操作),而无需使用对话框。

我需要此更改才能在发布候选版本上执行UIAutomator测试。

我试过的:在测试用例调用之间设置常量延迟。

但是我不能在测试用例之间设置恒定延迟,因为执行时间根据测试数据和设备/环境而变化。

我想到了BroadcastReceiver,但我不知道如何从UIAutomator注册?

是否有任何其他机制/解决方法来实现此功能?

+0

我不认为你可以从Uiautomator testcase注册BroadcastReceiver。一种方法是从批处理文件中调用Uiautomator测试用例,并在每个测试用例执行后检查状态并继续下一个测试用例。 – 2014-09-13 06:40:11

回答

0

我不确定你真正要求什么,但是由于我不被允许发表评论,如果我误解了,你可以纠正我。

您正在寻找一种方式来断言测试用例已经执行并且应用程序中没有出现异常?

首先您需要确定一个UiObject。然后你可以利用

UiObject.waitForExists(); 

当uiObject匹配在实例化中指定的查询时,上面的方法将返回true。

另一种解决方案是使用一个可以扩展UiAutomatorInstrumentationTestRunner的runner,在那里你创建一个TestSuite以设置顺序执行。

0

如果您希望UiAutomator向主控台报告状态,请在下面的帖子中回答。

Writing to Android UI Automator output console

Instrumentation.sendStatus(..)

在软件包中的每个键/值对会这样写出来:

INSTRUMENTATION_STATUS: key1=value1 
INSTRUMENTATION_STATUS: key2=value2 
INSTRUMENTATION_STATUS_CODE: -1 

所以,您的主机可以在任何你想要的步骤获取状态。

相关问题