如何在多个活动之间测试Android应用程序?

81
我们正在构建一个复杂的Android应用程序,由许多屏幕和工作流程组成,分布在许多活动中。我们的工作流程类似于您可能在银行ATM机上看到的内容,例如,有一个登录的Activity,转换到主菜单Activity,根据用户的选择可以转换到其他活动。
由于我们有如此多的工作流程,我们需要创建跨多个活动的自动化测试,以便我们可以从头到尾地测试工作流程。例如,使用ATM示例,我们希望输入有效的PIN码,验证发送到主菜单,选择提取现金,验证我们在提取现金屏幕上等等,并最终回到主菜单或“注销”。
我们已经玩弄了随Android一起提供的测试API(例如ActivityInstrumentationTestCase2)以及Positron,但两者都似乎无法测试超出单个Activity的范围,虽然我们可以在某些单元测试中找到这些工具的一些实用性,但它们不能满足我们测试跨多个活动的场景的需求。
我们欢迎xUnit框架、脚本、GUI记录器/播放等,并感谢任何建议。

2
从Android 4.1开始,现在有一个新的测试框架,可以跨越活动甚至整个系统进行测试:http://developer.android.com/tools/testing/testing_ui.html - Christopher Orr
1
Robotium也可以满足这个需求,而且只需要几行代码。 - Dori
14个回答

0

使用ActivityInstrumentation类还有另一种方法来执行多个活动... 这是一个普通的自动化场景... 首先获取您想要的任何对象的焦点,然后发送一个键 就这么简单 示例代码

button.requestFocus();
sendKeys(KeyEvent.KEYCODE_ENTER);

唯一需要做的就是理解每个API调用,这将有助于我们。


0

我个人没有使用过它,但是ApplicationTestCase看起来可能是你正在寻找的。


很遗憾,没有任何示例表明这是正确的。 - SingleShot
是的,看起来你是对的...被名称欺骗了。我无法解决这个问题。到目前为止,我最好的方法是使用positron的ActivityUnitTestCase来验证下一个活动是否已启动,但这并不能帮助你构建连贯的故事。或者,InstrumentationTestCase.launchActivity可能允许您启动任意数量的活动,但我仍在尝试弄清楚Instrumentation的东西。 - Eric

0

采用这种方法是否适用于来自不同应用程序、由不同证书签名的不同活动?如果不是,Robotium是测试同一应用程序中活动的最佳方式。


0

尝试使用Monkey工具进行测试

步骤1:

打开Android Studio终端(工具->打开终端)

步骤2:

为了使用Monkey,打开命令提示符并导航到以下目录。

 export PATH=$PATH:/home/adt-bundle-linux-x86-20140702/sdk/platform-tools

步骤三:

将此猴子命令添加到终端并按回车键。

在您的模拟器中看到神奇的效果。

adb shell monkey -p com.example.yourpackage -v 500

500 - 它是频率计数或要用于测试的事件数量。

您可以更改此计数。

更多参考资料:

http://www.tutorialspoint.com/android/android_testing.htm

http://androidtesting.blogspot.in/2012/04/android-testing-with-monkey-tool.html


投票者必须说明投票原因...这是可行的代码..也是官方测试方法。如果有任何错误,我准备纠正我的答案.. - Ranjithkumar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接