这几天开始学习android的事务操作,可是在测试的过程中,总是出现空指针错误。如下是代码和测试的结果。
package com.Liray.db;import java.util.List;import android.test.AndroidTestCase;
import android.util.Log;import com.Liray.domain.Person;
import com.Liray.service.DBOpenHelper;
import com.Liray.service.PersonService;
public class PersonServiceTest extends AndroidTestCase {
private static final String TAG = "PersonServiceTest"; public void testCreateDB() throws Throwable{
DBOpenHelper dbOpenHelper = new DBOpenHelper(this.getContext());
dbOpenHelper.getWritableDatabase();//第一次调用该方法就会创建数据库
}

public void testSave() throws Throwable{
PersonService personService = new PersonService(this.getContext());
Person person = new Person();
person.setName("xiaoxiao");
personService.save(person);

person = new Person();
person.setName("zhangliming");
personService.save(person);

person = new Person();
person.setName("libaobao");
personService.save(person);

person = new Person();
person.setName("taobao");
personService.save(person);
}

public void testUpate() throws Throwable{
PersonService personService = new PersonService(this.getContext());
Person person = personService.find(1);
person.setName("lili");
personService.update(person);
}

public void testDelete() throws Throwable{
PersonService personService = new PersonService(this.getContext());
personService.delete(1);
}

public void testFind() throws Throwable{
PersonService personService = new PersonService(this.getContext());
Person person = personService.find(1);
Log.i(TAG, person.toString());
}

public void testGetScrollData() throws Throwable{
PersonService personService = new PersonService(this.getContext());
List<Person> persons = personService.getScrollData(0, 3);
for(Person person : persons){
Log.i(TAG, person.toString());
}
}

public void testGetCount() throws Throwable{
PersonService personService = new PersonService(this.getContext());
Log.i(TAG, personService.getCount()+"");
}
}
Android测试空指针

解决方案 »

  1.   

    一个是好的习惯,比较可能出现异常的地方,在使用对象前都做 nill的判断。另外就是测试了。测试之后发现bug,修复。
      

  2.   


    楼上说的是,如果你要避免程序崩溃,就加try{}catch(Exception e){}吧。
      

  3.   

    请问我上面的那个程序有什么解决方法不?我才刚学呢?改了好久了都不会。求赐教~~~嘿嘿出现空指针都是个人忘了实例化对象的问题,
    你看你PersonServiceTest的第43行,
    绝对有一个对象忘了初始化。
      

  4.   

    有可能Person person = personService.find(1);得到的person为null。
    可以打印出来看看