Sam*_*uel 19 android unit-testing sharedpreferences robolectric kotlin
我编写了一个包含 RobolectricsTestRunner 的单元测试。
单元测试通过,但出现以下警告:
System.logW: No Compatibility callbacks set! Querying change 119147584
Run Code Online (Sandbox Code Playgroud)
我在单元测试中所做的一切,都是在共享首选项中保存了一个变量。这个警告不会破坏任何东西。我只是想知道这意味着什么。单元测试:
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [30])
class SharedPreferencesProviderTest {
private lateinit var sharedPreferencesProvider: SharedPreferencesProviderInterface
@Before
fun setup() {
// setup Shared preferences
...
// Shared Preferences Access
...
// clearing Shared Preferences
...
}
@Test
fun firstStart_shouldBeTrueDefaultAndCheckChange() {
// Default check
var firstStart =
sharedPreferencesProvider.getIsFirstStart()
var expected = true
assertTrue(firstStart == expected)
// Check whether it handles changes
sharedPreferencesProvider.setIsFirstStart(false)
firstStart =
sharedPreferencesProvider.getIsFirstStart()
expected = false
assertTrue(firstStart == expected)
}}
Run Code Online (Sandbox Code Playgroud)
我似乎不再触发 OnSharedPreferenceChangeListener,但我不确定。来源
tl;dr:你可以忽略这一点。
日志来自android.compat.Compatibility.BehaviorChangeDelegate. 这是行为改变监听器的接口类。
isChangeEnabled如下所述,函数调用的默认操作是打印日志并返回true。
@SystemApi(client = MODULE_LIBRARIES)
default boolean isChangeEnabled(long changeId) {
// Do not use String.format here (b/160912695)
System.logW("No Compatibility callbacks set! Querying change " + changeId);
return true;
}
Run Code Online (Sandbox Code Playgroud)
我假设在 Robolectric 测试运行期间,此类的实现不会覆盖 是isChangeEnabled如何附加和调用的。目前还不清楚它发生在哪里(我搜索了 robolectric 存储库,但我认为存储库不是罪魁祸首),以及我们如何解决这个问题 - 或者即使我们需要解决这个问题。
如果你只是好奇自己是否做错了什么,不,那不是你。您可以忽略此日志。
| 归档时间: |
|
| 查看次数: |
1808 次 |
| 最近记录: |