zoukankan      html  css  js  c++  java
  • 测试驱动android

    测试驱动android开发

    在安卓模拟器或者真机上跑测试用例速度很慢。构建、部署、启动app,通常需要花费一分钟或者更久。这不是TDD(测试驱动开发)模式.Robolectric提供一种更好的方式。

    可能你一直尝试在java IDE中使用junit或者testng直接跑测试用例,但是一直报java.lang.RuntimeException: Stub!异常。

    这个异常是因为在jdk中没有android运行环境。而现在Robolectric这款android单元测试工具,模拟了android sdk中的jar包,可以直接在jvm中运行测试用例,这样就大大节省了时间。一个Robolectric测试用例如下:

        // Test class for MyActivity     @RunWith(RobolectricTestRunner.class)     public class MyActivityTest {          @Test         public void clickingButton_shouldChangeResultsViewText() throws Exception {             Activity activity = Robolectric.buildActivity(MyActivity.class).create().get();              Button pressMeButton = (Button) activity.findViewById(R.id.press_me_button);             TextView results = (TextView) activity.findViewById(R.id.results_text_view);              pressMeButton.performClick();             String resultsText = results.getText().toString();             assertThat(resultsText, equalTo("Testing Android Rocks!"));         }     } 

    SDK,Resource和Native Method模拟

    Robolectric可以处理控件展示、资源加载和很多使用native C实现的真机上的其他功能。所以我们可以使用Robolectric来模拟真机上的大部分操作。我们可以很方便地获取Robolectric的源码,直接查看它的模拟机制,所以使用Robolectric,我们也可以模拟错误条件和一些真实的传感器信号。

    脱离模拟器执行测试用例

    Robolectric允许我们在项目工程中或者持续集成(CI如hudson、jenkins)中使用jvm来执行测试用例,所以就省掉了打包、安装的过程,将测试用例的执行时间由分钟级降到秒级。

    不再需要Mock框架

    使用一些Mock框架,如Mockito或者Android Mock等,可以模拟出android运行环境,达到和Robolectric相同的效果。这是一个有效的方法,但是使用这种方法写出的测试用例,很多情况下就是开发代码的反实现。

    Robolectric的测试风格更偏向于黑盒测试,robolectric式的测试用例更加关注与app的表现,而不是android运行环境的实现,所以使用robolectric写出的测试用例更有效。当然这也是看测试人员的喜好,如果喜欢可以同时使用Robolectric和mock框架。

  • 相关阅读:
    ORACLE触发器具体解释
    WebStorm 7.0 注冊码
    ZOJ 3794 Greedy Driver spfa
    Linux下的经常使用性能查询命令top、vmstat、gprof、pidstat之对照
    免费的天气预报API--谷歌,雅虎,中央气象台
    div:给div加滚动栏 div的滚动栏设置
    走进小作坊(十一)----移动web实现指南
    执行游戏时出现0xc000007b错误的解决方法
    中国大推力矢量发动机WS15 跨入 世界先进水平!
    tomcatserver乱码问题,tomcat与数据库之间的编码统一转换
  • 原文地址:https://www.cnblogs.com/ITniu/p/7380401.html
Copyright © 2011-2022 走看看