私はAndroidサービスの実装をテストするためにServiceTestCase
から拡張されたクラスを持っています。静的最終定数がnullになる
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
がnullであるためです。これは、この問題が発生したメソッドです:DB_PATH
は
私は変更しないでくださいnullのとき
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)
は明らかに失敗し、この一定のどこか(それが最終だから、とにかく、私はそれを変更することはできません)、Iドンので、この行動を理解していない。
この定数を別のクラス/インターフェイスに移動すると、正常に動作します。
誰でもこの現象を説明できますか?前もって感謝します!
'wipeOutDB()'ファイルのコンストラクタの内部 'NullPointerException'で失敗します。たぶん、[静的初期化子で予期しない例外が発生する](http:// docs(英語))につながる[循環静的依存関係](http://stackoverflow.com/questions/6416408/static-circular-dependency-in-java) .oracle.com/javase/6/docs/api/java/lang/ExceptionInInitializerError.html) – zapl
はい、NPEで失敗しますが、なぜ2回目のテストでのみ失敗しますか? – m0skit0