我有一个类来扩展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
}
Run Code Online (Sandbox Code Playgroud)
我现在面临的问题是,如果我只运行一个测试方法,一切都很好,但如果我发动全班同学(其中包含几个测试方法),然后在第二个测试方法,我得到的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());
}
}
Run Code Online (Sandbox Code Playgroud)
new File(DB_PATH)当DB_PATHnull为空时显然会失败
我不会在任何地方修改这个常量(无论如何我不能修改它,因为它是最终的),所以我不明白这种行为.
如果我将此常量移动到另一个类/接口,它可以正常工作.
任何人都可以解释这种行为吗?提前致谢!
您得到的异常意味着 DB_PATH 无法初始化 - 因此null稍后会初始化。我猜你用来初始化 DB_PATH 的部分之一是 null,可能在这个部分的某个地方:CoreService.class.getPackage().getName()。
另请参阅:http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ExceptionInInitializerError.html
| 归档时间: |
|
| 查看次数: |
614 次 |
| 最近记录: |