将testInstrumentationRunner "com.example.theapp.utils.CustomAndroidJUnitRunner"
设置为渐变和Run/Debug Configurations -> Android Tests -> MyInstrumentedTest -> General -> Specific instrumentation runner (optional)
并延伸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);
}
}
我在
newApplication
和callApplicationOnCreate
中设置了bp,看到调用了callApplicationOnCreate
,但没有newApplication
。有什么问题吗? 最佳答案
我以为newApplication()
没有被调用,因为断点没有被命中,但是在调试器有机会附加之前,方法似乎已经被调用了。
如果需要调试newApplication()
方法,我建议在runner构造函数中或断点之前的任何时间添加Debug.waitForDebugger()
。否则,请使用其他标志来确定是否正在调用该方法(即不依赖于调试器和断点)。