gpt4 book ai didi

android - 在 Android 中测试 SharedPreferences

转载 作者:行者123 更新时间:2023-12-03 18:40:43 25 4
gpt4 key购买 nike

我正在进入一个使用 SharedPreferences 进行数据持久性的遗留代码库。我想测试保存/检索值,使用 进行模拟模拟K .但是,此单元测试中的断言永远不会通过。就好像 SharedPrefs 在测试中没有正确存储:

class MyProfilePrefsTest {
private lateinit var myProfilePrefs: ProfilePrefs
@RelaxedMockK private lateinit var mockSharedPrefs: SharedPreferences
@RelaxedMockK private lateinit var context: Context

@Before
fun setup() {
MockKAnnotations.init(this)

val sharedPreferences = mockk<SharedPreferences>()
every { sharedPreferences.edit() } returns (mockk())
myProfilePrefs = ProfilePrefs(context, sharedPreferences)

mockStatic(DeviceInfo::class)
every { DeviceInfo.serialNumber() } returns "fake_serial"
}

@Test
fun `Saving correct cellular download pref for device id`() {
// Arrange
val isEnabled = true

// Act
myProfilePrefs.setCellularDownloadingEnabled(isEnabled)

// Assert
assertTrue(myProfilePrefs.getCellularDownloadingEnabled())
}}

有人知道如何对 SharedPrefs 进行单元测试吗?

最佳答案

感谢@samaromku 上面建议的答案。这是完整的解决方案。它使用 AndroidX 测试 运行者:

@RunWith(AndroidJUnit4::class)
class ProfilePrefsTest {
private lateinit var profilePrefs: ProfilePrefs
private lateinit var context: Context

@Before
fun setup() {
context = getApplicationContext<MyApplication>()
val sharedPreferences = context.getSharedPreferences(
"prefs",
MODE_PRIVATE
);
profilePrefs = ProfilePrefs(context, sharedPreferences)

mockStatic(DeviceInfo::class)
every { DeviceInfo.serialNumber() } returns FAKE_SERIAL_NUMBER
}

@Test
fun `Saving correct cellular download pref for device id`() {
// Arrange
val isEnabled = true

// Act
profilePrefs.setCellularDownloadingEnabled(isEnabled)

// Assert
assertTrue(profilePrefs.isCellularDownloadingEnabled())
}

}

关于android - 在 Android 中测试 SharedPreferences,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57150850/

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