我尝试使用版本3.3.2和3.4-rc3运行robolectric库。我的代码在内部尝试获取应用程序的单例实例。但是当我的测试运行时,检索到的应用程序实例始终为null。它与robolectric 3.1.2一起工作正常。我想升级,因为我想在测试中使用powermocks。 stackoverflow中有类似的问题。但它没有帮助我。请指教。以下是我的测试代码。我尝试使用PowerMockRunnerDelegator运行,如下所示。另外,尝试使用普通的RobolectricTestRunner作为Runner。这两种方法都不起作用。
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 21, application =
TestApplication.class)
@PowerMockIgnore({ "org.mockito.*", "org.robolectric.*",
"android.*"})
@PrepareForTest({MockActor.class})
public class MyTest {
@Mock
private MockActor mockActorInstance;
@Rule
public PowerMockRule rule = new PowerMockRule();
@Before
public void setup() throws Exception {
initMocks(this);
PowerMockito.mockStatic(MockActor.class);
whenNew(MockActor.class).withAnyArguments()
.thenReturn(mockActorInstance);
}
@Test
public void shouldTriggerCall() {
MyFragment myFragment = new MyFragment();
startFragment(myFragment);
myFragment.doAction();
verify(mockActorInstance).invoke();
}
}
答案 0 :(得分:0)
您可以实现自定义ShadowApplication并在那里存根静态getApplication方法。希望这https://medium.com/@chuangx/get-around-with-app-getapplication-in-robolectric-4b88d559fca5有帮助