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

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

相关文章推荐

Mockito基本教程

import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.atLeast; import stati...

Mockito入门

Mockito是最好的mock框架之一,API设计简洁优美,使用方便,可以在一定程度上提高我们的开发效率。

使用强大的 Mockito 测试框架来测试你的代码

这篇教程介绍了如何使用 Mockito 框架来给软件写测试用例 1. 预备知识 如果需要往下学习,你需要先理解 Junit 框架中的单元测试。 如果你不熟悉 JUnit,请查看下面的教程: ...

使用junit+mockito进行mock测试实例

刚开始做网站的时候,测试都是这样的(比如测试修改用户信息的表单逻辑):设置断点,启动运行程序,登陆,点击点击点击然后进入到测试的页面,输入测试数据,进入断点…….。一个大的程序启动又慢,还要登陆,还要...

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

Android 单元测试之Roboletric RxJava、Retrofit、访问真实网络、虚拟服务器添加依赖android { ... configurations.all { ...

JUnit与Mockito单元测试典型示例

单元测试的重要性无需赘述,但单元测试也会遇到困难,其中之一就是如何 创建依赖。试想我们常见的server端分层架构,数据访问层Dao,业务层, 以及Web层,想要单元测试业务层,我们需要依赖Dao...

Mockito(二)--实例篇

学习了基本知识后,就可以实战了。Mockito的实际使用还是比较麻烦的。 因为在实际使用中,最常遇到的就是需要模拟第三方类库的行为。 比如现在有一个类FTPFileTransfer,实现了向FTP...
  • OnlyQi
  • OnlyQi
  • 2011-06-15 16:52
  • 14420

Mockito的使用一

一、Mockito的引用 Gradle:repositories { jcenter() } dependencies { testCompile "org.mockito:mockito-core...

5分钟了解Mockito

一、什么是mock测试,什么是mock对象?   先来看看下面这个示例: 从上图可以看出如果我们要对A进行测试,那么就要先把整个依赖树构建出来,也就是BCDE的实例。 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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