关闭

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

标签: android单元测试Demo使用Roboletric
842人阅读 评论(0) 收藏 举报
分类:

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:76992次
    • 积分:1669
    • 等级:
    • 排名:千里之外
    • 原创:94篇
    • 转载:7篇
    • 译文:0篇
    • 评论:12条
    最新评论