gpt4 book ai didi

在kotlin of realm中进行Android测试

转载 作者:太空狗 更新时间:2023-10-29 16:29:40 24 4
gpt4 key购买 nike

如何在 Android 中对 Realm 数据库进行简单测试,在 Kotlin 中实现测试?

我试图改编来自 java Realm 的 fragment test on github到 kotlin 并获得下一个代码:

import io.realm.Realm 
import io.realm.log.RealmLog
import org.hamcrest.CoreMatchers
import org.junit.Assert

import org.junit.Test import org.junit.Before import org.junit.Rule
import org.mockito.Mockito.`when`
import org.powermock.api.mockito.PowerMockito
import org.powermock.modules.junit4.rule.PowerMockRule

class DBTest {

@Rule
var rule = PowerMockRule()
lateinit internal var mockRealm: Realm

@Before
fun setup() {
PowerMockito.mockStatic(RealmLog::class.java)
PowerMockito.mockStatic(Realm::class.java)

val mockRealm = PowerMockito.mock(Realm::class.java)

`when`(Realm.getDefaultInstance()).thenReturn(mockRealm)

this.mockRealm = mockRealm
}

@Test
fun shouldBeAbleToGetDefaultInstance() {
Assert.assertThat(Realm.getDefaultInstance(), CoreMatchers.`is`(mockRealm))
}

}

但是当我执行测试时,我得到:

org.junit.internal.runners.rules.ValidationError: The @Rule 'rule' must be public.

最佳答案

您可以像这样公开规则的 getter:

@get: Rule
var rule = PowerMockRule()

或者你可以用@JvmField注解将其标记为Java风格的字段:

@JvmField @Rule
var rule = PowerMockRule()

您可以在此答案中找到更多详细信息:https://stackoverflow.com/a/32827600/4465208

附言。如果您不打算在任何地方更改它的值,您还应该考虑将其设为 val

关于在kotlin of realm中进行Android测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42528039/

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