小编Bre*_*nan的帖子

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

我正在尝试模拟用于 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 …

java unit-testing mockito firebase powermockito

5
推荐指数
0
解决办法
1098
查看次数

`.build()`在Google Analytics for Android的上下文中做了什么?

此代码初始化一个新的EventBuilder对象并在该对象上设置值.为什么最后需要.build()?

tracker.send(new HitBuilders.EventBuilder()
    .setCategory("Achievement")
    .setAction("Unlocked")
    .setLabel("5 Dragons Rescued")
    .setValue(1)
    .build());
Run Code Online (Sandbox Code Playgroud)

java android google-analytics

1
推荐指数
1
解决办法
34
查看次数