Android的测试在领域的kotlin

如何才能做一个简单的测试在Android的领域数据库在Kotlin实施测试?

我试图从github上的java realm test中将一个片段调整为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. 

你可以使规则的获取者像这样:

 @get: Rule var rule = PowerMockRule() 

或者,您可以使用@JvmField注释将其标记为Java样式字段:

 @JvmField @Rule var rule = PowerMockRule() 

你可以在这个答案中find更多的细节: https : //stackoverflow.com/a/32827600/4465208

PS。 如果你不打算在任何地方改变它的价值,你也应该考虑把它作为一个价值。

Realm java 4.1.0已经发布,并且Kotlin的Realm的大部分问题已经解决了! 。 您可以测试我的示例项目,以了解如何配置项目或创建类。 我的示例是用kotlin在Realm对象服务器中测试模块。