【Android】robolectric测试实践

来源:互联网 发布:vb小游戏 编辑:程序博客网 时间:2024/06/03 21:28
0.开发环境:androidStudio3.0
1.build.gradle配置
android {    compileSdkVersion 26    defaultConfig {        applicationId "com.naton.materialdemo"        minSdkVersion 15        targetSdkVersion 26        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    testOptions {        unitTests {            includeAndroidResources = true        }    }}dependencies {    implementation fileTree(dir: 'libs', include: ['*.jar'])    implementation 'com.android.support:appcompat-v7:26.1.0'    implementation 'com.android.support:design:26.1.0'    implementation 'com.android.support.constraint:constraint-layout:1.0.2'    testImplementation 'junit:junit:4.12'    androidTestImplementation 'com.android.support.test:runner:1.0.1'    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'    testCompile "org.robolectric:robolectric:3.5.1"}
2.创建自定义CustomRobolectricTestRunner
public class CustomRobolectricTestRunner extends RobolectricTestRunner {    public CustomRobolectricTestRunner(Class<?> testClass) throws InitializationError {        super(testClass);        RoboSettings.setMavenRepositoryId("alimaven");        RoboSettings.setMavenRepositoryUrl("http://maven.aliyun.com/nexus/content/groups/public/");    }}
3.页面测试
package com.naton.materialdemo.robolectric;import android.content.Intent;import android.widget.Button;import com.naton.materialdemo.AutoCompleteTextViewActivity;import com.naton.materialdemo.BuildConfig;import com.naton.materialdemo.MainActivity;import com.naton.materialdemo.R;import org.junit.Ignore;import org.junit.Test;import org.junit.runner.RunWith;import org.robolectric.Robolectric;import org.robolectric.annotation.Config;import org.robolectric.shadows.ShadowApplication;import static org.junit.Assert.assertEquals;/** * <p> * CopyRright (c)2017:  * <p> * Project:  * <p> * Comments:  ${todo}(用一句话描述该文件做什么) * <p> * NameSpace: ${package_name} ${file_name} * <p> * Author:  * <p> * Create Date: 2017/11/3 * <p> * Modified By: <修改人中文名或拼音缩写> * <p> * Modified Date: <修改日期> * <p> * Why & What is modified: <修改原因描述> * <p> * Version: v1.0 */@RunWith(CustomRobolectricTestRunner.class)@Config(constants = BuildConfig.class)public class SampleActivityTest {    @Test    public void TextTest() throws Exception {        System.out.println("test");    }    @Test    public void onclickTest(){        MainActivity activity = Robolectric.setupActivity(MainActivity.class);        activity.findViewById(R.id.autoCompleteTextView).performClick();        Intent expectedIntent = new Intent(activity, AutoCompleteTextViewActivity.class);        Intent actual = ShadowApplication.getInstance().getNextStartedActivity();        assertEquals(expectedIntent.getComponent(), actual.getComponent());    }    @Test    public void ButtonTextTest() throws Exception {        MainActivity activity = Robolectric.setupActivity(MainActivity.class);        Button autoCompleteTextView = (Button) activity.findViewById(R.id.autoCompleteTextView);        Button results = (Button) activity.findViewById(R.id.results);        assertEquals(results.getText().toString(),"Robolectric Rocks!");    }    @Test    public void ButtonTextErrorTest() throws Exception {        MainActivity activity = Robolectric.setupActivity(MainActivity.class);        Button autoCompleteTextView = (Button) activity.findViewById(R.id.autoCompleteTextView);        Button results = (Button) activity.findViewById(R.id.results);        assertEquals(results.getText().toString(),"Robolectric R!");    }}
知行办公,专业移动办公平台 https://zx.naton.cn/
原创团队
【总监】十二春秋之,3483099@qq.com;
【Master】zelo,616701261@qq.com;【运营】运维艄公,897221533@qq.com;
【产品设计】流浪猫,364994559@qq.com;【体验设计】兜兜,2435632247@qq.com;
【iOS】淘码小工,492395860@qq.com;iMcG33K,imcg33k@gmail.com;
【Android】人猿居士,1059604515@qq.com;思路的顿悟,1217022114@qq.com;
【java】首席工程师MR_W,feixue300@qq.com;【测试】土镜问道,847071279@qq.com
【数据】fox009521,42151960@qq.com;【安全】保密,你懂的。
原创粉丝点击