51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

Robolectric进行Android单元测试

[复制链接]
  • TA的每日心情
    奋斗
    2021-8-6 16:14
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2019-3-27 14:47:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    测试驱动android开发
    在安卓模拟器或者真机上跑测试用例速度很慢。构建、部署、启动app,通常需要花费一分钟或者更久。这不是TDD(测试驱动开发)模式.Robolectric提供一种更好的方式。
    可能你一直尝试在java IDE中使用junit或者testng直接跑测试用例,但是一直报java.lang.RuntimeException: Stub!异常。
    这个异常是因为在jdk中没有android运行环境。而现在Robolectric这款android单元测试工具,模拟了android sdk中的jar包,可以直接在jvm中运行测试用例,这样就大大节省了时间。一个Robolectric测试用例如下:
    1. // Test class for MyActivity
    2.     @RunWith(RobolectricTestRunner.class)
    3.     public class MyActivityTest {

    4.         @Test
    5.         public void clickingButton_shouldChangeResultsViewText() throws Exception {
    6.             Activity activity = Robolectric.buildActivity(MyActivity.class).create().get();

    7.             Button pressMeButton = (Button) activity.findViewById(R.id.press_me_button);
    8.             TextView results = (TextView) activity.findViewById(R.id.results_text_view);

    9.             pressMeButton.performClick();
    10.             String resultsText = results.getText().toString();
    11.             assertThat(resultsText, equalTo("Testing Android Rocks!"));
    12.         }
    13.     }
    复制代码

    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框架。

    样例工程
    查看这个样例工程,来看看Robolectric是如何即快又简单地测试android应用程序的。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-15 01:32 , Processed in 0.065354 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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