gpt4 book ai didi

android - Mockito 不适用于 androidTest

转载 作者:行者123 更新时间:2023-12-02 13:23:16 25 4
gpt4 key购买 nike

我正在尝试模拟一些对象,然后将它们注入(inject)演示者但不起作用

它说我有一个模拟的 lateInt 属性没有被初始化:

这是我的测试课

    @Mock
lateinit var storage: StorageContract

@Mock
lateinit var activityCallBack: LaunchContract.ActivityCallBack

@InjectMocks
lateinit var launchPresenter: LaunchContract.Presenter

@get: Rule
@InjectMocks
var activity: ActivityTestRule<LaunchActivity> = ActivityTestRule<LaunchActivity>(LaunchActivity::class.java)

@Test
fun testRegAndLoginVisible() {
Mockito.`when`(storage.isLoggedIn()).thenReturn(false)
onView(withId(R.id.loginBtn))
.check(matches(isDisplayed()))
onView(withId(R.id.registerBtn))
.check(matches(isDisplayed()))

}

这是我的构建脚本
 testImplementation 'junit:junit:4.12'
testImplementation 'au.com.dius:pact-jvm-consumer-junit_2.11:3.5.10'
testImplementation 'org.mockito:mockito-inline:2.13.0'
testImplementation 'io.mockk:mockk:1.6.3'
testImplementation 'org.assertj:assertj-core:3.8.0'

androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'junit:junit:4.12'
androidTestImplementation 'org.mockito:mockito-android:2.13.0'

我得到的错误:

kotlin.UninitializedPropertyAccessException: lateinit property storage has not been initialized

最佳答案

@Mock注释工作正常,你应该:

@RunWith(MockitoJUnitRunner::class) 注释你的测试类

或者

调用MockitoAnnotations.initMocks(this)在您的“设置”方法中(用 @Before 注释)

@Before
fun setup() {
MockitoAnnotations.initMocks(this)
}

编辑:

另外,请确保您使用的是最新版本的 JDK 8,Mockito 对旧 JDK 版本有一些问题 ( https://github.com/mockito/mockito/issues/636)

关于android - Mockito 不适用于 androidTest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50372574/

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