3

Nach testInstrumentationRunner "com.example.theapp.utils.CustomAndroidJUnitRunner" in Gradle Einstellung und in Run/Debug Configurations -> Android Tests -> MyInstrumentedTest -> General -> Specific instrumentation runner (optional) und sich AndroidJUnitRunner:callApplicationOnCreate heißt aber nicht newApplication (erstreckende AndroidJUnitRunner)

import android.app.Application; 
import android.content.Context; 
import android.support.test.runner.AndroidJUnitRunner; 

public class CustomAndroidJUnitRunner extends AndroidJUnitRunner { 
    @Override 
    public Application newApplication(ClassLoader cl, String className, Context context) throws InstantiationException, IllegalAccessException, ClassNotFoundException { 
     return super.newApplication(cl, className, context); 
    } 

    @Override 
    public void callApplicationOnCreate(Application app) { 
     super.callApplicationOnCreate(app); 
    } 
} 

I set BP in newApplication und in callApplicationOnCreate und sehen, dass callApplicationOnCreate genannt wird, aber nicht newApplication . Was könnte das Problem sein?

Antwort

0

Ich dachte, newApplication() wurde nicht aufgerufen, da der Haltepunkt nicht getroffen wurde, aber es scheint, dass die Methode aufgerufen wurde, bevor der Debugger die Möglichkeit hatte, anzuhängen.

Wenn Sie die Methode newApplication() debuggen müssen, empfehle ich Debug.waitForDebugger(); Entweder im Runner-Konstruktor oder jederzeit vor dem Breakpoint. Andernfalls verwenden Sie ein anderes Flag, um herauszufinden, ob die Methode aufgerufen wird oder nicht (dh, verlassen Sie sich nicht auf den Debugger und die Breakpoints).