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
}
私が直面している問題は、1つのテストメソッドだけを実行すればすべてがうまくいくということですが、クラス全体(複数のテストメソッドを含む)を起動すると、2番目のテストメソッドでが取得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
がnullの場合は明らかに失敗します
私はこの定数をどこにも変更しないので(とにかく最終的なものなので変更できません)、この動作を理解していません。
この定数を別のクラス/インターフェイスに移動すると、正常に機能します。
誰かがこの振る舞いを説明できますか?前もって感謝します!