2

我需要从 Robolectric 项目自定义 RobolectricTestRunner,但我发现了一个我不理解的奇怪行为:

RobolectricTestRunner 包含methodBlock调用 ParallelUniversesetUpApplicationState(bootstrappedMethod, parallelUniverseInterface, strictI18n, systemResourceLoader, appManifest, config); 的方法执行setUpApplicationState

在第 146 行,setupApplicationState执行application.onCreate(); 当我调试应用程序时,当我在第 146 行检查 Robolectric.application 值时,我看到它已成功创建,但如果我在 RobolectricTestRunner 类中检查相同的值,则在以下行之后:220, Robolectric.application是空的...为什么?这是一个静态值..我无法理解!

4

2 回答 2

1

我找到了我的问题的答案:parallelUniverse 是通过调用sdkEnvironment.getRobolectricClassLoader()which use a different classLoader:来创建的AsmInstrumentingClassLoaderRobolectricTestRunner是不同 classLoader 的一部分,所以我无法访问同一个对象

于 2014-05-13T13:59:57.370 回答
0

我发布这个,如果这可能对你有帮助我们 如何在 Robolectric 中访问应用程序的上下文?

并考虑@EugenMartynov 的回答,获得 100 多张赞成票

Just use for version 1.x and 2.x:

Robolectric.application;

And for version 3.x:

RuntimeEnvironment.application;

希望这可以帮助你....

于 2016-08-30T10:56:35.800 回答