使用Mockito在android中测试FirebaseRemoteConfig的JUnit测试用例



如何使用Mockito为android中的FirebaseRemoteConfig编写JUnit测试用例。

到目前为止,我已经尝试过了:

class MyUtilClassTest {
@Test
fun testKeyValue() {
val context = mock(Context::class.java)
FirebaseApp.initializeApp(Context)
val keyValue = MyUtilClass.getKeyValue("keyName")
assertTrue(keyValue)
}
}
object MyUtilClass {
fun getKeyValue(key: String) {
FirebaseRemoteConfig.getInstance().getString(documentName)
...
}
}

但得到这个例外:

java.lang.NullPointerException
at com.google.android.gms.common.internal.StringResourceValueReader.<init>(com.google.android.gms:play-services-basement@@17.3.0:5)
at com.google.firebase.FirebaseOptions.fromResource(FirebaseOptions.java:156)
at com.google.firebase.FirebaseApp.initializeApp(FirebaseApp.java:242)

我强烈建议使用Mockito来模拟依赖Firebase Remote Config的MyUtilClass方法,而不是直接在单元测试中使用它。

例如,这样的东西可能会起作用(如果Mockito的用法是不是100%准确,已经有一段时间了(:

@Test
public void myTest {
MyUtilClass mockUtilClass = Mockito.mock(MyUtilClass.class);
Mockito.when(mockUtilClass.getKeyValue(eq("keyName")).thenReturn("expectedValue"));
// Run test with mocked util class.
testCodePath()
}

请注意,当部署到测试设备时,在QA环境中测试Remote Config是有意义的,但在单元测试中测试Remote Config本身几乎从来都不是一个好主意。与其这样做,您可以对期望从远程配置返回的值进行硬编码或模拟,并根据这些值集测试您的函数或组件。

相关内容

  • 没有找到相关文章

最新更新