Roboletric 4.8.2 修改进程名:
1 2 3 |
import org.robolectric.shadows.ShadowApplication; ShadowApplication.setProcessName(); |
Roboletric 4.8.2 修改私有静态变量:
1 2 3 |
import org.robolectric.util.ReflectionHelpers; ReflectionHelpers.setStaticField(xx.class, "static filed name", value); |
如果报错:
1 2 3 4 |
java.lang.IllegalStateException: No instrumentation registered! Must run under a registering instrumentation. at androidx.test.platform.app.InstrumentationRegistry.getInstrumentation(InstrumentationRegistry.java:45) at androidx.test.core.app.ApplicationProvider.getApplicationContext(ApplicationProvider.java:41) |
则修改方式如下:
1 |
@PowerMockIgnore({"org.mockito.*", "org.robolectric.*", "android.*", "androidx.*"}) |
完整的例子如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import org.junit.runner.RunWith; import org.powermock.core.classloader.annotations.PowerMockIgnore; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunnerDelegate; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; /** * Base class extended by every Robolectric test in this project. * <p/> * You can use Powermock together with Robolectric. */ @RunWith(PowerMockRunner.class) @PowerMockRunnerDelegate(RobolectricTestRunner.class) @Config(constants = BuildConfig.class, sdk = 21) @PowerMockIgnore({"org.mockito.*", "org.robolectric.*", "android.*", "androidx.*"}) public abstract class RobolectricTest { } |