Shu*_*ham 9 android mockito firebase-analytics
我正在进行单元测试
@RunWith(MockitoJUnitRunner.class)
我使用firebase Analytics来记录事件
MyApplication.getAnalytics().getInstance(appContext).logEvent(eventType,bundle)
这在我的Application类中
public static FirebaseAnalytics getAnalytics() {
return FirebaseAnalytics.getInstance(appContext);
}
Run Code Online (Sandbox Code Playgroud)
现在,在运行测试时,我正在接受NullPointerException.为我的单元测试初始化Analytics或者忽略它们的正确方法是什么.
我没有得到上下文,以防我尝试在我的测试设置方法中初始化它.
您可以创建一个模拟应用程序类来扩展您的应用程序类,然后使用存根值或模拟对象覆盖 getAnalytics。另外,您应该使您的 getAnalytics 方法成为非静态的,因为它更容易测试,并且您可以通过依赖项注入传递引用,或者您可以使用对应用程序类的静态引用(但这不太可测试,所以我会选择第一个选项)
public class MockApplication extends MyApplication {
public FirebaseAnalytics getAnalytics() {
return mock(FirebaseAnalytics.class)
}
}
Run Code Online (Sandbox Code Playgroud)
然后您可以使用@Config注释来配置您的测试运行程序,如下所示
@RunWith(RobolectricTestRunner.class)
@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.M, application = MockApplication.class)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
913 次 |
| 最近记录: |