我需要从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:AsmInstrumentingClassLoaderRobolectricTestRunner是不同classLoader的一部分,因此我无法访问同一对象

08-15 19:31