一、Android中单元测试的基础使用
①、简单示例:(在android中测试加法)
public final class MathUtils {
private MathUtils(){
throw new IllegalArgumentException("该类无法实例化");
}
public static int addition(int a,int b){
return a+b;
}
}
测试类:
public class MathUtilsTest extends TestCase{
public void testMathUtils(){
assertEquals(0,MathUtils.addition(1,-1));
assertEquals(2,MathUtils.addition(1,1));
}
}
如果使用AndroidStudio会自动加载junit包
在build下能够看到:
testCompile 'junit:junit:4.12'
③、测试类如何拥有Context
作用:使用AndroidTestCase就能够为我们提供context了。
1、首先需要在build.gradle中加上,才能使用AndroidTestCase
android {
// ...
testOptions {
unitTests.returnDefaultValues = true
}
}
2、使用
public class ContextTest extends AndroidTestCase {
public void testContext(){
//自带了context,初始化为null,context需要设置
assertNotNull(mContext);
}
@Override
public void setUp() throws Exception {
super.setUp();
//创建Context,如果不使用该语句,Context默认为null
mContext = new MockContext();
}
}
二、Android四大组件测试
前言:本人查找的大部分文章都是使用Android自带的测试包android.test进行对四大组件的测试。但是本人使用android.test中的测试类,无法获取四大组件的对象,且找不到文档解决该问题。所以使用Robolectric框架进行单元测试,如果大家没有这种问题的话,可以尝试使用android自带的单元测试包(没找到太好的关于介绍原生单元测试的文章。。。)
例:
public class ActivityTest extends ActivityInstrumentationTestCase2<MainActivity> {
public ActivityTest() {
super(MainActivity.class);
}
@Override
public void setUp() throws Exception {
super.setUp();
assertNotNull(getInstrumentation());//返回null
assertNotNull(getActivity());//返回null
}
public void testActivity(){
}
}