0

私は非常に初期のAndroidロード段階でNullpointer例外を取得し続けています:

Launching instrumentation android.test.InstrumentationTestRunner on 3031C2FF986F00EC
 [2013-01-13 02:53:30 - Login] Test run failed: Instrumentation run failed due to 'java.lang.NullPointerException'

これは、このエラーをトリガーするOrmLiteSqliteOpenHelper(私が推測するSqliteOpenHelperである可能性もあります)サブクラスメソッドに挿入したコードの一部が原因です。このコードはロードプロセスの早い段階で呼び出されるため、これが発生するようです。残念ながら、プログラムはロードプロセスの早い段階でブレークポイントなしで停止します。

私はすでに他のコードの場所でコードを広範囲にそして首尾よくテストしました。

では、Androidにすべてが読み込まれたときに、このコードをエラーなしで実行できることをどのように知ることができますか?

参考:これは、サーバーからデータベースコンテンツをフェッチし、それをローカルのsqlliteデータベースに保存するコードです。これにより、プログラムを起動したときにデータベースが常に同じ状態(サーバーによって指定)になります。

OK編集してコードを投稿します

public class DatabaseTests extends ActivityInstrumentationTestCase2<UebersichtEinsaetze> {
    private DatabaseHelperBase helper;
    private UebersichtEinsaetze mainActivity;

    public DatabaseTests() {
        super("de.innosoft.android", UebersichtEinsaetze.class);
    }

    // throws exception -.-
    protected void setUp() throws Exception {
        super.setUp();

ユニットテストファイルで停止します。そこからどこに行くのかはわかりませんが、到達することはわかっています(UebersichtEinsaetzeのどこかで、SimpleCursorFactoryで動作する関数を超えて関数を呼び出したため):

public <T extends Entity<T, I>, I> RuntimeExceptionDao<T, I> getRTE(Class<T> clazz) {
    RuntimeExceptionDao<T, I> rte = super.getRTE(clazz);
            initTestdata();
    return rte;
}

initTestdataは次のとおりです。

            if (!init)
            {
                new HttpBase(new HttpGet(), "setup", "InitTestdata").evaluate();
                if (!isTestdataUpToData())
                {
                    this.dropTables();
                    this.createTables();
                    try {
                        Map<Class<?>, List<Object>> m = ControllerMethod.GETALL.testServer();
                        for (EntityRef<?> entityRef : Entity.entities) {
                            List<Object> l = m.get(entityRef.getClazz());
                            if (entityRef.getSizeOfTestTable() != l.size())
                                throw new Exception("Testdata inconsistency");
                            for (Object entity : l) {
                                Object dao = this.getClass().getMethod("getRTE", Class.class).invoke(this, entityRef.getClazz());
                                dao.getClass().getMethod("create", Object.class).invoke(dao, entity);
                            }
                        }
                    } catch (Exception e) {
                        ExceptionHandler.handle(e);
                    }
                }
                init = true;
            }
        }

ここで例外が発生します。このコードブロックを削除して、ディレクトリのどこかに単体テストに貼り付けると(たとえば)、機能します。しかし、私はそれをしたくありません。

logcat:

     01-13 03:32:18.594: I/dalvikvm(24888): Turning on JNI app bug workarounds for target SDK version 8...
01-13 03:32:18.707: D/dalvikvm(24888): GC_CONCURRENT freed 146K, 13% free 2657K/3044K, paused 3ms+8ms, total 33ms
01-13 03:32:18.765: I/ActivityThread(24888): Pub de.innosoft.android: de.innosoft.android.test
01-13 03:32:18.816: D/dalvikvm(24888): GC_CONCURRENT freed 164K, 13% free 2983K/3396K, paused 3ms+3ms, total 37ms
01-13 03:32:18.886: D/dalvikvm(24888): GC_CONCURRENT freed 228K, 14% free 3222K/3720K, paused 3ms+2ms, total 23ms
01-13 03:32:18.886: D/dalvikvm(24888): WAIT_FOR_CONCURRENT_GC blocked 13ms
01-13 03:32:18.914: D/dalvikvm(24888): GC_FOR_ALLOC freed 245K, 16% free 3317K/3912K, paused 16ms, total 16ms
01-13 03:32:18.937: D/dalvikvm(24888): GC_FOR_ALLOC freed 241K, 15% free 3411K/4008K, paused 16ms, total 16ms
01-13 03:32:19.011: D/dalvikvm(24888): GC_CONCURRENT freed 241K, 12% free 3631K/4112K, paused 2ms+3ms, total 38ms
01-13 03:32:19.140: D/dalvikvm(24888): GC_CONCURRENT freed 96K, 8% free 4031K/4340K, paused 3ms+3ms, total 49ms
01-13 03:32:19.265: D/dalvikvm(24888): GC_CONCURRENT freed 324K, 12% free 4259K/4824K, paused 2ms+4ms, total 51ms
01-13 03:32:19.422: D/dalvikvm(24888): GC_CONCURRENT freed 505K, 15% free 4387K/5132K, paused 2ms+4ms, total 55ms
01-13 03:32:19.484: W/dalvikvm(24888): Exception Ljava/lang/NullPointerException; thrown while initializing Lde/innosoft/android/data/Consts;
01-13 03:32:19.484: D/AndroidRuntime(24888): Shutting down VM
01-13 03:32:19.484: W/dalvikvm(24888): threadid=1: thread exiting with uncaught exception (group=0x40db5930)
01-13 03:32:19.492: E/AndroidRuntime(24888): FATAL EXCEPTION: main
01-13 03:32:19.492: E/AndroidRuntime(24888): java.lang.ExceptionInInitializerError
01-13 03:32:19.492: E/AndroidRuntime(24888):    at de.innosoft.android.data.HttpBase.<init>(HttpBase.java:76)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at de.innosoft.android.data.DatabaseHelperTestdata.initTestdata(DatabaseHelperTestdata.java:46)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at de.innosoft.android.data.DatabaseHelperTestdata.getRTE(DatabaseHelperTestdata.java:75)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at de.innosoft.android.test.onCreate(test.java:66)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at android.content.ContentProvider.attachInfo(ContentProvider.java:1058)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at android.app.ActivityThread.installProvider(ActivityThread.java:4969)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4582)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4524)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at android.app.ActivityThread.access$1300(ActivityThread.java:150)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1304)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at android.os.Looper.loop(Looper.java:137)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at android.app.ActivityThread.main(ActivityThread.java:5191)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at java.lang.reflect.Method.invokeNative(Native Method)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at java.lang.reflect.Method.invoke(Method.java:511)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
01-13 03:32:19.492: E/AndroidRuntime(24888):    at dalvik.system.NativeStart.main(Native Method)
01-13 03:32:19.492: E/AndroidRuntime(24888): Caused by: java.lang.NullPointerException
01-13 03:32:19.492: E/AndroidRuntime(24888):    at de.innosoft.android.data.Consts.<clinit>(Consts.java:36)
01-13 03:32:19.492: E/AndroidRuntime(24888):    ... 18 more
4

0 に答える 0