gpt4 book ai didi

android - 模拟 FirebaseRemoteConfig getBoolean()

转载 作者:行者123 更新时间:2023-12-04 17:30:35 25 4
gpt4 key购买 nike

我有一个单元测试,要求我为 firebase 配置条目返回 truefalse。但即使我将模拟设置为 true,它在单元测试运行时也总是返回 false

这是我的模拟:

doReturn(true).when(mock(FirebaseRemoteConfig.class)).getBoolean(any());

这是带有truefalse 条件的代码

FirebaseRemoteConfig firebaseRemoteConfig = FirebaseRemoteConfig.getInstance();
boolean useHttp = firebaseRemoteConfig.getBoolean(RemoteConfigKeys.PUSH_RECEIVED_USE_HTTP);

useHttp 始终为 false

测试依赖:

    // Unit test dependencies
testImplementation 'androidx.test:core:1.2.0'
testImplementation "androidx.work:work-testing:2.2.0"
testImplementation 'org.junit.jupiter:junit-jupiter:5.5.2'
testImplementation 'org.robolectric:robolectric:4.3.1'
testImplementation 'org.robolectric:shadows-playservices:4.3.1'
testImplementation 'org.mockito:mockito-core:2.24.5'
testImplementation 'com.google.truth:truth:1.0'
testImplementation 'com.google.android.material:material:1.0.0'
testImplementation "com.squareup.leakcanary:leakcanary-android:2.0-beta-5"
kaptTest 'org.parceler:parceler:1.1.12'
kaptTest "com.google.dagger:dagger-compiler:2.25.4"

如有任何想法,我们将不胜感激!

最佳答案

你的第一个语句等同于:

FirebaseRemoteConfig aTemporaryExistingJavaObject = mock(FirebaseRemoteConfig.class);
doReturn(true).when(aTemporaryExistingJavaObject).getBoolean(any());

它不起作用,因为您的生产代码没有使用该模拟(FirebaseRemoteConfig.getInstance() 不会返回它)。

您需要一种方法将模拟注入(inject)到被测试的类中,例如

  • 将其传递给测试方法
  • 将其传递给构造函数
  • 在测试中发现的 protected 方法中调用 FirebaseRemoteConfig.getInstance()

关于android - 模拟 FirebaseRemoteConfig getBoolean(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60107884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com