我需要从Robolectric项目中自定义RobolectricTestRunner,但是发现了一个我不理解的奇怪行为:
RobolectricTestRunner
包含调用的methodBlock
setUpApplicationState(bootstrappedMethod, parallelUniverseInterface, strictI18n, systemResourceLoader, appManifest, config);
该方法执行ParallelUniverse类的setUpApplicationState
。
在第146行,setupApplicationState
执行application.onCreate();
当我调试应用程序时,当我在第146行检查Robolectric.application值时,我看到它已成功创建,但是如果我在RobolectricTestRunner类中检查了相同的值,则在第220行之后,Robolectric.application为null ...
为什么?这是一个静态值。我不明白!
最佳答案
我找到了我的问题的答案:
通过调用使用不同classLoader的sdkEnvironment.getRobolectricClassLoader()
创建parallelUniverse:AsmInstrumentingClassLoader
,RobolectricTestRunner
是不同classLoader的一部分,因此我无法访问同一对象