单元测试中的糖orm产生了空指针异常

时间:2015-06-23 09:48:31

标签: android database unit-testing nullpointerexception sugarorm

我要做的是实现单元测试,但我需要在它之前清除数据库。

问题是有时清除数据库会因NullPointerException而失败。

基本上,我在每个DTO上调用deleteAll方法(例如BusinessUnit.deleteAll(BusinessUnit.class)。有时这会失败(尽管并非总是如此)。

空指针源自SugarRecord自己的方法:

public static <T extends SugarRecord<?>> void deleteAll(Class<T> type) {
    Database db = SugarApp.getSugarContext().getDatabase();
    SQLiteDatabase sqLiteDatabase = db.getDB(); // exception is thrown here
    sqLiteDatabase.delete(getTableName(type), (String)null, (String[])null);
}

可能导致此错误的原因是什么?

1 个答案:

答案 0 :(得分:2)

首先让糖尿病开始。您首先要让SugarOrm启动。这项任务需要一些时间。因此,添加以下内容:

public class ApplicationTest extends ApplicationTestCase<Application> {
@Override
public void setUp() throws Exception {
    super.setUp();

    // SugarORM need some time to start up, else tests will fail
    Thread.sleep(3000);
}