Robolectric Application实例始终为null

时间:2017-07-12 06:07:00

标签: android robolectric

我尝试使用版本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();
    }
}

1 个答案:

答案 0 :(得分:0)

您可以实现自定义ShadowApplication并在那里存根静态getApplication方法。希望这https://medium.com/@chuangx/get-around-with-app-getapplication-in-robolectric-4b88d559fca5有帮助