无法模拟适用于 Android 的 Firebase Analytics 实例

Bre*_*nan 5 java unit-testing mockito firebase powermockito

我正在尝试模拟用于 Android 单元测试的 Firebase Analytics 实例,但在调用 Firebase 的getInstance()方法后,我的 Firebase 变量仍未定义- 这应该初始化 FirebaseAnalytics 类的实例。

我正在使用 PowerMock 和 Android Studio。这是我的 Test.java 文件(还没有测试 - 只是尝试初始化类的模拟):

@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = 18, manifest = 
Config.NONE)
@PowerMockIgnore({ "org.mockito.*", "org.robolectric.*", "android.*" })
@PrepareForTest({FirebaseAnalytics.class})
public class FirebaseTest {
    @Rule public PowerMockRule rule = new PowerMockRule();
    @Mock Application application;
    @Mock Analytics analytics;
    FirebaseAnalytics firebase;

    @Before
    public void setUp() {
        initMocks(this);

        /* mock context */
        when(analytics.getApplication()).thenReturn(application);

        PowerMockito.mockStatic(FirebaseAnalytics.class);

when(FirebaseAnalytics.getInstance(application)).thenReturn(firebase);  /* firebase remains null */
        PowerMockito.mockStatic(FirebaseAnalytics.class);
    }
Run Code Online (Sandbox Code Playgroud)

FirebaseAnalytics 是最终类,而 getInstance() 是静态最终方法。我不确定这些是否会使嘲笑变得困难。任何想法表示赞赏!