我正在尝试模拟用于 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 …
此代码初始化一个新的EventBuilder对象并在该对象上设置值.为什么最后需要.build()?
tracker.send(new HitBuilders.EventBuilder()
.setCategory("Achievement")
.setAction("Unlocked")
.setLabel("5 Dragons Rescued")
.setValue(1)
.build());
Run Code Online (Sandbox Code Playgroud)