开发者社区 问答 正文

脚本编写该如何进行?(2)


b. 加入Robotium.jar(下载地址)
下载Robotium.jar,然后在测试工程目录创建一个Robotium的文件夹(其他名字也可以,但是不要使用lib这个名字,它是特殊文件夹),并将Robotium.jar拷贝过去。然后把这个jar包,加入到工程的build path中。具体方法:右键点击测试工程,选择properties,在Libraries选项中,点击Add JARs添加,如下图:

然后打开MtsAutomationTest.java 并拷贝以下代码:

  1. [backcolor=transparent]package[backcolor=transparent] com[backcolor=transparent].[backcolor=transparent]jayway[backcolor=transparent].[backcolor=transparent]test[backcolor=transparent].[backcolor=transparent]test[backcolor=transparent];
  2. [backcolor=transparent]import[backcolor=transparent] com[backcolor=transparent].[backcolor=transparent]robotium[backcolor=transparent].[backcolor=transparent]solo[backcolor=transparent].[backcolor=transparent]Solo[backcolor=transparent];
  3. [backcolor=transparent]import[backcolor=transparent] android[backcolor=transparent].[backcolor=transparent]test[backcolor=transparent].[backcolor=transparent]ActivityInstrumentationTestCase2[backcolor=transparent];
  4. [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]class[backcolor=transparent] [backcolor=transparent]MtsAutomationTest[backcolor=transparent]  [backcolor=transparent]extends[backcolor=transparent] [backcolor=transparent]ActivityInstrumentationTestCase2[backcolor=transparent] [backcolor=transparent]{
  5. [backcolor=transparent]    [backcolor=transparent]private[backcolor=transparent] [backcolor=transparent]Solo[backcolor=transparent] solo[backcolor=transparent];
  6. [backcolor=transparent]    [backcolor=transparent]private[backcolor=transparent] [backcolor=transparent]final[backcolor=transparent] [backcolor=transparent]static[backcolor=transparent] [backcolor=transparent]String[backcolor=transparent] lanchActivity [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]"com.alibaba.mts.mtsdemoapp.MainActivity"[backcolor=transparent];
  7. [backcolor=transparent]    [backcolor=transparent]// 通过反射的方式,找到可以启动的Activity的Class.
  8. [backcolor=transparent]    [backcolor=transparent]private[backcolor=transparent] [backcolor=transparent]static[backcolor=transparent] [backcolor=transparent]Class[backcolor=transparent]<?>[backcolor=transparent] launcherActivityClass[backcolor=transparent];
  9. [backcolor=transparent]    [backcolor=transparent]static[backcolor=transparent]{
  10. [backcolor=transparent]        [backcolor=transparent]try[backcolor=transparent] [backcolor=transparent]{
  11. [backcolor=transparent]            launcherActivityClass [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]Class[backcolor=transparent].[backcolor=transparent]forName[backcolor=transparent]([backcolor=transparent]lanchActivity[backcolor=transparent]);
  12. [backcolor=transparent]        [backcolor=transparent]}[backcolor=transparent] [backcolor=transparent]catch[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]ClassNotFoundException[backcolor=transparent] e[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  13. [backcolor=transparent]            [backcolor=transparent]throw[backcolor=transparent] [backcolor=transparent]new[backcolor=transparent] [backcolor=transparent]RuntimeException[backcolor=transparent]([backcolor=transparent]e[backcolor=transparent]);
  14. [backcolor=transparent]        [backcolor=transparent]}
  15. [backcolor=transparent]    [backcolor=transparent]}
  16. [backcolor=transparent]    [backcolor=transparent]@SuppressWarnings[backcolor=transparent]([backcolor=transparent]"unchecked"[backcolor=transparent])
  17. [backcolor=transparent]    [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]MtsAutomationTest[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]throws[backcolor=transparent] [backcolor=transparent]ClassNotFoundException[backcolor=transparent] [backcolor=transparent]{
  18. [backcolor=transparent]        [backcolor=transparent]super[backcolor=transparent]([backcolor=transparent]launcherActivityClass[backcolor=transparent]);
  19. [backcolor=transparent]    [backcolor=transparent]}
  20. [backcolor=transparent]    [backcolor=transparent]@Override
  21. [backcolor=transparent]    [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] setUp[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]throws[backcolor=transparent] [backcolor=transparent]Exception[backcolor=transparent] [backcolor=transparent]{
  22. [backcolor=transparent]        [backcolor=transparent]//setUp() 先于测试用例的执行, 用于初始化环境
  23. [backcolor=transparent]        [backcolor=transparent]//solo对象在这里被创建出来
  24. [backcolor=transparent]        solo [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]new[backcolor=transparent] [backcolor=transparent]Solo[backcolor=transparent]([backcolor=transparent]getInstrumentation[backcolor=transparent](),[backcolor=transparent] getActivity[backcolor=transparent]());
  25. [backcolor=transparent]    [backcolor=transparent]}
  26. [backcolor=transparent]    [backcolor=transparent]@Override
  27. [backcolor=transparent]    [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] tearDown[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]throws[backcolor=transparent] [backcolor=transparent]Exception[backcolor=transparent] [backcolor=transparent]{
  28. [backcolor=transparent]        [backcolor=transparent]//tearDown() 是执行完所有的测试用例之后被执行。
  29. [backcolor=transparent]        [backcolor=transparent]//finishOpenedActivities() 会终止在测试期间打开的所有的activities.
  30. [backcolor=transparent]        solo[backcolor=transparent].[backcolor=transparent]finishOpenedActivities[backcolor=transparent]();
  31. [backcolor=transparent]    [backcolor=transparent]}[backcolor=transparent]
  32. [backcolor=transparent]}

把launchActivity字符串替换为,被测APP的launchable-activity,比如本次使用的APP的启动Activity:"com.alibaba.mts.mtsdemoapp.MainActivity"。
然后,我们在MtsAutomationTest.java文件中添加一条测试用例: 添加一个函数testLogin(所有的测试case的函数名都要以test开始,testXXX的格式):
  1. [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] testLogin[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]throws[backcolor=transparent] [backcolor=transparent]Exception[backcolor=transparent] [backcolor=transparent]{
  2. [backcolor=transparent]    [backcolor=transparent]// 启动之后,等待5s,UI界面稳定下来
  3. [backcolor=transparent]    solo[backcolor=transparent].[backcolor=transparent]sleep[backcolor=transparent]([backcolor=transparent]5000[backcolor=transparent]);
  4. [backcolor=transparent]    [backcolor=transparent]// 图例3.3.1:在文字“Tab4”上点击,进入登录页
  5. [backcolor=transparent]    solo[backcolor=transparent].[backcolor=transparent]clickOnText[backcolor=transparent]([backcolor=transparent]"Tab4"[backcolor=transparent]);
  6. [backcolor=transparent]    [backcolor=transparent]// Activity切换时,最好等待一会儿。否则,某些异步元素可能还没加载
  7. [backcolor=transparent]    solo[backcolor=transparent].[backcolor=transparent]sleep[backcolor=transparent]([backcolor=transparent]5000[backcolor=transparent]);
  8. [backcolor=transparent]    [backcolor=transparent]// 图例3.3.2:此Activity中只有两个EditText控件,索引0是用户名控件。
  9. [backcolor=transparent]    [backcolor=transparent]EditText[backcolor=transparent] user [backcolor=transparent]=[backcolor=transparent] solo[backcolor=transparent].[backcolor=transparent]getEditText[backcolor=transparent]([backcolor=transparent]0[backcolor=transparent]);
  10. [backcolor=transparent]    [backcolor=transparent]// enterText用于向EditText控件中输入内容,用户名为:admin
  11. [backcolor=transparent]    solo[backcolor=transparent].[backcolor=transparent]enterText[backcolor=transparent]([backcolor=transparent]user[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"admin"[backcolor=transparent]);
  12. [backcolor=transparent]    [backcolor=transparent]//图例3.3.2:索引1是密码控件
  13. [backcolor=transparent]    [backcolor=transparent]EditText[backcolor=transparent] pwd  [backcolor=transparent]=[backcolor=transparent] solo[backcolor=transparent].[backcolor=transparent]getEditText[backcolor=transparent]([backcolor=transparent]1[backcolor=transparent]);
  14. [backcolor=transparent]    [backcolor=transparent]// 密码也是:admin
  15. [backcolor=transparent]    solo[backcolor=transparent].[backcolor=transparent]enterText[backcolor=transparent]([backcolor=transparent]pwd[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"admin"[backcolor=transparent]);
  16. [backcolor=transparent]    [backcolor=transparent]// 点击包含“登录”文字的控件。如果Activity中包含多个“登录”,我们需要指定控件索引,像下面数字2。这个索引可能需要尝试几次获取。
  17. [backcolor=transparent]    solo[backcolor=transparent].[backcolor=transparent]clickOnText[backcolor=transparent]([backcolor=transparent]"登陆"[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]2[backcolor=transparent]);
  18. [backcolor=transparent]    [backcolor=transparent]// 图例3.3.3: 测试完成之后,等待5s结束。一般登录需要跟后台交互,这里的等待是这个目的。
  19. [backcolor=transparent]    solo[backcolor=transparent].[backcolor=transparent]sleep[backcolor=transparent]([backcolor=transparent]5000[backcolor=transparent]);
  20. [backcolor=transparent]}

除了上面几种获取控件的方法,还有一种常用的,通过resource-id获取控件的方法:
  1. [backcolor=transparent]Activity[backcolor=transparent] act[backcolor=transparent]=[backcolor=transparent]solo[backcolor=transparent].[backcolor=transparent]getCurrentActivity[backcolor=transparent]();
  2. [backcolor=transparent]TextView[backcolor=transparent] loginView [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]TextView[backcolor=transparent])[backcolor=transparent] solo[backcolor=transparent].[backcolor=transparent]getView[backcolor=transparent]([backcolor=transparent]act[backcolor=transparent].[backcolor=transparent]getResources[backcolor=transparent]().[backcolor=transparent]getIdentifier[backcolor=transparent]([backcolor=transparent]"login"[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]"id"[backcolor=transparent],[backcolor=transparent] act[backcolor=transparent].[backcolor=transparent]getPackageName[backcolor=transparent]()))

展开
收起
猫饭先生 2017-10-25 10:18:04 1355 分享 版权
0 条回答
写回答
取消 提交回答