Android 单元测试之Roboletric的简单使用

原创 2016年08月29日 09:00:36

Android 单元测试之Roboletric的简单使用

Android 单元测试之JUnit和Mockito
Android 单元测试之Roboletric 环境配置
Android 单元测试之Roboletric的简单使用
Android 单元测试之Roboletric RxJava、Retrofit、访问真实网络、虚拟服务器
Android 单元测试之Espresso - Google官方UI测试框架

最简单的使用

新建布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:id="@+id/login"
        android:text="Login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>

新建Activity

public class WelcomeActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.welcome_activity);

        final View button = findViewById(R.id.login);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(new Intent(WelcomeActivity.this, LoginActivity.class));
            }
        });
    }
}  

新建测试

@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class WelcomeActivityTest {

    @Test
    public void clickingLogin_shouldStartLoginActivity() {
        WelcomeActivity activity = Robolectric.setupActivity(WelcomeActivity.class);
        activity.findViewById(R.id.login).performClick();

        Intent expectedIntent = new Intent(activity, LoginActivity.class);

        assertIntent(expectedIntent,shadowOf(activity).getNextStartedActivity());
    }
}

由于robolectric:3.1.X在assetThat Intent时的bug导致比较不成功,故暂时使用该方法

public class AssertM {
    /**
     * 由于robolectric:3.1.X在assetThat时Intent时的bug导致比较不成功,故暂时使用该方法
     *
     * @param expected
     * @param actual
     */
    public static void assertIntent(Intent expected, Intent actual) {
        assertEquals(expected.toString(), actual.toString());
    }
}  

然后,运行,发现测试通过

其他

源码Demo

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android自动化测试2-Roboletric

一,创建一个Android工程,用于后面的各种自动化测试 这里我们创建一个简单的计算器,用户可以输入两个数字,点击按钮相乘得到结果。 应用界面如下: 在MainActivity中...
  • tjuac
  • tjuac
  • 2014年10月20日 22:05
  • 382

robolectric完全解析

官网地址:http://robolectric.org介绍:在android设备上跑测试用例太慢了,编译、部署、启动app要花费很多时间。Robolectric是一个单元测试框架,测试是运行在jvm上...
  • ying1414058425
  • ying1414058425
  • 2017年08月02日 20:12
  • 794

Android 单元测试之Roboletric 环境配置

Android 单元测试之Roboletric 环境配置 Robolectric由于只在Java虚拟机中运行,速度很快,虽然在API支持上无法和Espresso相比,但速度有很大优势,适合单元测试,尤...
  • EthanCo
  • EthanCo
  • 2016年08月29日 08:54
  • 1487

Android 单元测试之Roboletric RxJava、Retrofit、访问真实网络、虚拟服务器

Android 单元测试之Roboletric RxJava、Retrofit、访问真实网络、虚拟服务器添加依赖android { ... configurations.all { ...
  • EthanCo
  • EthanCo
  • 2016年08月29日 08:57
  • 2387

Android 单元测试之Roboletric RxJava、Retrofit、访问真实网络、虚拟服务器

Android 单元测试之Roboletric RxJava、Retrofit、访问真实网络、虚拟服务器添加依赖android { ... configurations.all { ...
  • EthanCo
  • EthanCo
  • 2016年08月29日 08:57
  • 2387

Android 单元测试之Roboletric 环境配置

Android 单元测试之Roboletric 环境配置 Robolectric由于只在Java虚拟机中运行,速度很快,虽然在API支持上无法和Espresso相比,但速度有很大优势,适合单元测试,尤...
  • EthanCo
  • EthanCo
  • 2016年08月29日 08:54
  • 1487

Android 单元测试之Espresso - Google官方UI测试框架

Android 单元测试之Espresso - Google官方UI测试框架Espresso是Google官方推出的Instrumentation UI测试框架,在API支持方面有着天然的优势,在推出...
  • EthanCo
  • EthanCo
  • 2016年08月29日 09:02
  • 1696

关于Android单元测试

【转载自美团点评技术团队的一篇文章,原文在这里:http://http://tech.meituan.com/Android_unit_test.htmld_unit_test.html。为了方便大家...
  • MarcoZhan
  • MarcoZhan
  • 2017年04月16日 18:55
  • 257

python 几种常用测试框架

测试的常用规则 一个测试单元必须关注一个很小的功能函数,证明它是正确的;每个测试单元必须是完全独立的,必须能单独运行。这样意味着每一个测试方法必须重新加载数据,执行完毕后做一些清理工作。通常通过...
  • zcabcd123
  • zcabcd123
  • 2017年02月06日 14:16
  • 810

Qt单元测试QTestLib

1  概述 QT提供内部的单元测试库,使用方便。 2 目的:使用内部功能进行单元测试。 2.1 功能测试 根据输入,测试输出结果。 2.2 GUI功能测试 根据UI事件输入,并测试输出结果。 3 原理...
  • yansmile1
  • yansmile1
  • 2016年12月20日 14:16
  • 1415
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 单元测试之Roboletric的简单使用
举报原因:
原因补充:

(最多只允许输入30个字)