51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2173|回复: 0
打印 上一主题 下一主题

[转贴] 使用 CTS 框架执行 Robotium、UIAutomator2、Espresso 测试用例

[复制链接]
  • TA的每日心情
    无聊
    2024-9-19 09:07
  • 签到天数: 11 天

    连续签到: 2 天

    [LV.3]测试连长

    跳转到指定楼层
    1#
    发表于 2017-8-8 11:33:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    使用CTS框架执行instrumentation类型的用例有很多好处,因为CTS框架自带很多光环,比如支持多机并行执行测试,多机分布式执行测试,出错自动截图,出错自动保存log,可以很方便地指定测试包、类、方法,自动重跑失败用例,并附赠精美测试报告等等诸多好处,以前我们用junit,用testng,很多东西需要自己实现,其实CTS已经都给你集成了。这里简单讲讲怎么用CTS框架来执行自定义的用例。
    1.第三方apk的测试
    这里用Robotium官方万年不变的NotePad例子
    新建一个xml文件,名字随便写,内容如下:
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <TestPackage appNameSpace="com.jayway.test" appPackageName="com.robotium" name="NotePadTest" runner="android.test.InstrumentationTestRunner" targetBinaryName="NotePad" version="1.0">
    3. <TestSuite name="com">
    4. <TestSuite name="robotium">
    5. <TestSuite name="test">
    6. <TestCase name="NotePadTest">
    7. <Test name="testAddNote" />
    8. <Test name="testEditNote" />
    9. <Test name="testRemoveNote" />
    10. </TestCase>
    11. </TestSuite>
    12. </TestSuite>
    13. </TestSuite>
    14. </TestPackage>
    复制代码
    看下这格式就知道怎么配置了,简单解释下:
    appNameSpace是测试包的包名
    appPackageName可以随便写,这个也是你在CTS里用list packages命令看到的测试package名字,指定包名运行时就是靠这个
    name是测试包的文件名
    runner用默认的InstrumentationTestRunner
    targetBinaryName是被测试包的文件名
    下面的TestSuite、TestCase、Test name看NotePadTest源码目录:


    很简单一目了然,TestSuite就是源码的包名一层层嵌套下来,TestCase就是源码的测试类的类名,Test name就是测试类里面的方法名
    把这个xml文件和编译出来的NotePad.apk,NotePadTest.apk一共3个文件扔到android-cts/repository/testcases下
    下面开始运行:
    首先用list packages看下可测的包:


    可以看到我们自定义的测试包了
    运行测试:
    1. run cts -p com.robotium
    复制代码

    测试完成:



    打开报告看一眼:


    很好,打完收工。
    什么?没说完?UIAutomator2和Espresso还用说吗?照猫画虎就行了,随便给个UIAutomator2的例子,记得runner改成AndroidJUnitRunner
    UIAutomator2源码见https://github.com/googlesamples/android-testing/tree/master/ui/uiautomator/BasicSample


    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <TestPackage appNameSpace="com.example.android.testing.uiautomator.BasicSample.test" appPackageName="com.mytest" name="app-test-debug" runner="android.support.test.runner.AndroidJUnitRunner" targetBinaryName="app-test" version="1.0">
    3. <TestSuite name="com">
    4. <TestSuite name="example">
    5. <TestSuite name="android">
    6. <TestSuite name="testing">
    7. <TestSuite name="uiautomator">
    8. <TestSuite name="BasicSample">
    9. <TestCase name="ChangeTextBehaviorTest">
    10. <Test name="checkPreconditions" />
    11. <Test name="testChangeText_sameActivity" />
    12. <Test name="testChangeText_newActivity" />
    13. </TestCase>
    14. </TestSuite>
    15. </TestSuite>
    16. </TestSuite>
    17. </TestSuite>
    18. </TestSuite>
    19. </TestSuite>
    20. </TestPackage>
    复制代码

    照样把2个apk和xml文件扔过去就可以启动测试了
    2.系统内置应用
    内置应用其实很简单,把xml文件里的targetBinaryName删掉就行了,把你的测试apk和xml文件扔过去,就可以测了,比如:
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <TestPackage appNameSpace="com.jayway.test" appPackageName="com.robotium" name="NotePadTest" runner="android.test.InstrumentationTestRunner" version="1.0">
    3. <TestSuite name="com">
    4. <TestSuite name="robotium">
    5. <TestSuite name="test">
    6. <TestCase name="NotePadTest">
    7. <Test name="testAddNote" />
    8. <Test name="testEditNote" />
    9. <Test name="testRemoveNote" />
    10. </TestCase>
    11. </TestSuite>
    12. </TestSuite>
    13. </TestSuite>
    14. </TestPackage>
    复制代码
    掌握了规则,就可以写脚本自动打包、生成xml,测试,出报告一条龙服务了。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-25 06:33 , Processed in 0.065076 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表