Android 静态最终常数为空

Android 静态最终常数为空,android,junit,Android,Junit,我有一个从ServiceTestCase扩展的类来测试我的Android服务实现 public class MainCoreServiceTest extends ServiceTestCase<CoreService> { protected static final String DB_PATH = "/data/data/" + CoreService.class.getPackage().getName() + "/databases/"

我有一个从
ServiceTestCase
扩展的类来测试我的Android服务实现

public class MainCoreServiceTest extends ServiceTestCase<CoreService> {

    protected static final String DB_PATH = "/data/data/"
            + CoreService.class.getPackage().getName() + "/databases/"
            + DatabaseManager.DB_NAME;

    // More code
}
DB\u PATH
为空时,新建文件(DB\u PATH)显然会失败

我没有在任何地方修改这个常量(无论如何,我不能修改它,因为它是最终的),所以我不理解这个行为

如果我把这个常量移到另一个类/接口,它就可以正常工作


有人能解释一下这种行为吗?提前谢谢

您得到的异常意味着无法初始化DB_路径-因此稍后它是
null
。我猜您用来初始化DB_PATH的一个部分是空的,可能在这个部分的某个地方:
CoreService.class.getPackage().getName()


另请参见:

wipeOutDB()
将因文件构造函数中的
NullPointerException
而失败。也许你有一些答案是肯定的,但NPE确实失败了,但为什么只在第二次测试中?毫无意义,
CoreService.class.getPackage().getName()
怎么会有空值?好了,这是完全静态的信息。它在第一次测试中起作用。。。
private void wipeOutDB() {

    // Erase DB file
    File dbFile = new File(DB_PATH);
    if (dbFile.exists()) {
        assertTrue(dbFile.delete());
    }

    // Erase journal file
    dbFile = new File(DB_PATH + "-journal");
    if (dbFile.exists()) {
        assertTrue(dbFile.delete());
    }
}