一、目的
1.1、减少模拟器运行、真机调试,提高工作效率;
1.2、减少错误,提前发现问题;
1.3、做到功能单元全面覆盖;
二、单元测试
2.1、什么是单元测试?
指对软件中的最小可测试单元进行检查和验证。
简单来说单元测试就是将一个软件功能拆分成N个最小的不可拆分的单元功能点,对单元功能点的测试就是单元测试。
2.2、单元测试有哪些?
Android中的测试一般分为:功能测试,接口测试,数据测试等;我们所说的单元测试主要是功能测试,主要用于测试功能性的需求,比如网络请求,数据存储,数据库,api,SharedPerferences,验证时间,转化格式,正则验证等。不能测试UI功能,不能测试需要硬件支持的功能(比如蓝牙,wifi等),不能测试App跳转等等。
三、单元测试类
3.1、androidTest测试类
androidTest测试类适用于需要依赖Android api的单元测试,需要连接Android设备才能进行测试。
新建的androidTest java类需要添加@RunWith(AndroidJUnit4.class)注解,类的方法如果是测试入口方法需要添加@Test注解。
public class MainActivityTest {
private Context mTargetContext;
@Before
public void setUp() throws Exception {
mTargetContext = InstrumentationRegistry.getTargetContext();
}
@Test
public void onCreate() {
try {
ApplicationInfo applicationInfo = mTargetContext.getPackageManager().getApplicationInfo(mTargetContext.getPackageName(), PackageManager.GET_META_DATA);
Bundle metaData = applicationInfo.metaData;
String data = metaData.getString("com.xiaoying.TEST");
assertEquals("1234567890", data);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
}
}
3.2、test测试类
test测试类适用于纯java的单元测试,运行于当前设备的jvm环境中,无需Android设备即可测试。新建test java类,类的方法如果是测试入口方法需要添加@Test注解。
public class UtilsTest {
@Before
public void setUp() throws Exception {
}
@Test
public void isEmpty() {
assertEquals(true, Utils.isEmpty(""));
}
}
3.3、测试类中的setUp方法与tearDown()方法
在测试类中的setUp方法,可以在启动测试前进行一些初始化,比如测试类中的变量等初始化,这个方法需要添加@Before注解。
在测试类中的tearDown方法,可以在测试后进行一些资源释放,,这个方法需要添加@After注解。
3.4、关于自动生成测试类和测试方法
在项目源码中选中需要添加单元测试的类并打开,在内容显示区域“右键”->“Go To”,在弹出窗口中选择“Test”,在弹出窗口中选择“Create New Test ......”
在接下来弹出的对话框中,勾选需要添加单元测试的方法,在这里有个“Generate”通用方法生成,可以选择setUp/@Before(启动前调用,可用于初始化)和tearDown/@After(结束后调用)
网友评论