普通写法:
public class TestBlackNumberDao extends AndroidTestCase {
// 测试框架用和内容提供者用系统提供的虚假的上下文getContext
/**
* 测试添加
*
* @throws Exception
*/
public void testAdd() throws Exception {
BlackNumberDao dao = new BlackNumberDao(getContext());
boolean result = dao.add("13022723571", "1");
assertEquals(true, result);
}
public void testDelete() throws Exception {
BlackNumberDao dao = new BlackNumberDao(getContext());
boolean result = dao.delete("13022723571");
assertEquals(true, result);
}
.....................................
}
这样就重复new了多次BlackNumberDao,但是直接把BlackNumberDao抽取出来作为类变量使用会报错的。因为在执行getContext之前
必须是测试框架已将加载,加载完了才能调用,直接作为类成员变量,会报空指针的错误。
解决办法:
利用父类的初始化环境的方法SetUp里初始化context,在teardown方法制空:修改后
BlackNumberDao dao;
// 测试框架用和内容提供者用系统提供的虚假的上下文getContext
/**
* 测试添加
*
* @throws Exception
*/
@Override
protected void setUp() throws Exception {
// TODO Auto-generated method stub
dao=new BlackNumberDao(getContext());
super.setUp();
}
@Override
protected void tearDown() throws Exception {
// TODO Auto-generated method stub
dao=null;
super.tearDown();
}
这样在测试方法直接
public void testAdd() throws Exception {
dao = new BlackNumberDao(getContext());
boolean result = dao.add("13022723571", "1");
assertEquals(true, result);
}