【Android】JUnit和Espresso单元测试新手快速入门
引入依赖
android {defaultConfig {testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"}}dependencies {testImplementation 'junit:junit:4.13.2'androidTestImplementation 'androidx.test.ext:junit:1.1.0'androidTestImplementation 'androidx.test:rules:1.1.0'androidTestImplementation 'androidx.test:runner:1.1.0'androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'}
Java代码测试
package com.android.myapplication;import org.junit.Test;import static org.junit.Assert.*;public class ExampleUnitTest {@Testpublic void addition_isCorrect() {assertEquals(4, 2 + 2);}}
点击被Test标注的方法,左侧的运行按钮,就可以执行测试任务
AndroidUI测试
package com.android.myapplication;import static androidx.test.espresso.Espresso.onView;import static androidx.test.espresso.action.ViewActions.click;import static androidx.test.espresso.matcher.ViewMatchers.withId;import android.content.Context;import androidx.test.platform.app.InstrumentationRegistry;import androidx.test.ext.junit.runners.AndroidJUnit4;import androidx.test.rule.ActivityTestRule;import org.junit.Assert;import org.junit.Rule;import org.junit.Test;import org.junit.runner.RunWith;@RunWith(AndroidJUnit4.class)public class ExampleInstrumentedTest {@Rulepublic ActivityTestRule<MainActivity> activityTestRule = new ActivityTestRule(MainActivity.class, true);@Testpublic void useAppContext() {//验证包名是否正确Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();Assert.assertEquals("com.android.myapplication", appContext.getPackageName());//模拟点击事件onView(withId(R.id.fab)).perform(click());//启动ActivityactivityTestRule.getActivity();}}
点击被Test标注的方法,左侧的运行按钮,就可以执行测试任务
查看测试报告
测试任务执行完毕,会在app/build/reports目录下生成测试报告
报告会统计所有测试任务的执行结果,已经通过率
注意事项
Android单元测试,特别是Espresso框架,依赖于Gradle插件和SDK版本
Gradle插件版本不兼容,SDK版本不兼容,手机不支持时,单元测试都可能会执行失败
可能会遇到的意外比较多,如果不幸遇坑,需要靠自己去耐心尝试