我有一个扩展自的类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
}
我面临的问题是,如果我只运行一个测试方法,一切都很好,但是如果我启动整个类(包含几个测试方法)然后在第二个测试方法上我得到一个ExceptionInInitializerError
,我发现这是DB_PATH
因为无效的。这是发生这种情况的方法:
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());
}
}
new File(DB_PATH)
DB_PATH
当为空时显然失败
我不会在任何地方修改这个常量(无论如何我不能修改它,因为它是最终的),所以我不理解这种行为。
如果我将此常量移动到另一个类/接口,它工作正常。
谁能解释一下这种行为?提前致谢!