Android Robolectric使用

简介: Rebolectic在src中有三个包,分别是:test、androidTest 和javatest:是测试不涉及Activity,UI组件的纯Java方法。

Rebolectic

  1. 在src中有三个包,分别是:test、androidTest 和java
    test:是测试不涉及Activity,UI组件的纯Java方法。
    直接在电脑上直接测试。
    androidTest:涉及UI,Android组件的都在该路径下测试。
    需要连接真机,或者模拟器进行测试。
    java:项目代码

  2. 在moudle中的build.gradle文件下依赖

testCompile "org.robolectric:robolectric:3.6.1"
  1. 主界面xml布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.mazaiting.robolectrictest.MainActivity">

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


    <Button
        android:id="@+id/btn_open"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="open"/>
</LinearLayout>

  1. MainActivity.java代码(项目中使用了ButterKnife框架)

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.inject(this);

    }

    @OnClick(R.id.btn_login)
    public void login(){
        Log.e(TAG, "login: 登录");
        Toast.makeText(this, "登录", Toast.LENGTH_SHORT).show();
    }

    @OnClick(R.id.btn_open)
    public void open(){
        Intent intent = new Intent(MainActivity.this, LoginActivity.class);
        startActivity(intent);
    }
}
  1. test包下的测试MainActivityTest类

/**
 * @author mazaiting
 * @date 2017/12/26
 */
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21)
public class MainActivityTest {

    @Before
    public void before(){
        Logger.error("start");
    }

    @Test
    public void clickLoginBtn(){
        MainActivity activity = Robolectric.setupActivity(MainActivity.class);
        activity.findViewById(R.id.btn_login).performClick();
        Logger.error(ShadowToast.getTextOfLatestToast());
    }

    @Test
    public void clickOpenBtn(){
        MainActivity activity = Robolectric.setupActivity(MainActivity.class);
        activity.findViewById(R.id.btn_open).performClick();

        Intent expectedIntent = new Intent(activity, LoginActivity.class);
        Intent actual = ShadowApplication.getInstance().getNextStartedActivity();
        Logger.debug(expectedIntent.getComponent().toString());
        Logger.debug(actual.getComponent().toString());
        Assert.assertEquals(expectedIntent.getComponent(), actual.getComponent());
    }


    @After
    public void after(){
        Logger.error("after");
    }
}

  1. 更多使用请查看官方文档
目录
相关文章
|
Java 测试技术 开发工具
Android单元测试(七):Robolectric介绍
前面花了很多篇幅介绍的JUnit和Mockito,它们都是针对Java全平台的一些测试框架。写到这里,咱们开始介绍一个专门针对Android平台的单元测试框架Robolectric。
2204 0
|
测试技术 Android开发 开发者
|
6天前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
11天前
|
搜索推荐 Android开发 开发者
探索安卓开发中的自定义视图:打造个性化UI组件
【10月更文挑战第39天】在安卓开发的世界中,自定义视图是实现独特界面设计的关键。本文将引导你理解自定义视图的概念、创建流程,以及如何通过它们增强应用的用户体验。我们将从基础出发,逐步深入,最终让你能够自信地设计和实现专属的UI组件。
|
13天前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异和挑战
【10月更文挑战第37天】在移动应用开发的广阔舞台上,安卓和iOS这两大操作系统扮演着主角。它们各自拥有独特的特性、优势以及面临的开发挑战。本文将深入探讨这两个平台在开发过程中的主要差异,从编程语言到用户界面设计,再到市场分布的不同影响,旨在为开发者提供一个全面的视角,帮助他们更好地理解并应对在不同平台上进行应用开发时可能遇到的难题和机遇。
|
15天前
|
XML 存储 Java
探索安卓开发之旅:从新手到专家
【10月更文挑战第35天】在数字化时代,安卓应用的开发成为了一个热门话题。本文旨在通过浅显易懂的语言,带领初学者了解安卓开发的基础知识,同时为有一定经验的开发者提供进阶技巧。我们将一起探讨如何从零开始构建第一个安卓应用,并逐步深入到性能优化和高级功能的实现。无论你是编程新手还是希望提升技能的开发者,这篇文章都将为你提供有价值的指导和灵感。
|
13天前
|
存储 API 开发工具
探索安卓开发:从基础到进阶
【10月更文挑战第37天】在这篇文章中,我们将一起探索安卓开发的奥秘。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和建议。我们将从安卓开发的基础开始,逐步深入到更复杂的主题,如自定义组件、性能优化等。最后,我们将通过一个代码示例来展示如何实现一个简单的安卓应用。让我们一起开始吧!
|
14天前
|
存储 XML JSON
探索安卓开发:从新手到专家的旅程
【10月更文挑战第36天】在这篇文章中,我们将一起踏上一段激动人心的旅程,从零基础开始,逐步深入安卓开发的奥秘。无论你是编程新手,还是希望扩展技能的老手,这里都有适合你的知识宝藏等待发掘。通过实际的代码示例和深入浅出的解释,我们将解锁安卓开发的关键技能,让你能够构建自己的应用程序,甚至贡献于开源社区。准备好了吗?让我们开始吧!
25 2
|
15天前
|
Android开发
布谷语音软件开发:android端语音软件搭建开发教程
语音软件搭建android端语音软件开发教程!