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());
}
}