如何将 Espresso 与 Kotlin Flow 结合使用?
how to use Espresso with Kotlin Flow?
在我的应用程序中,我使用 Kotlin Flow。在我使用带有 EspressoIdlingResource.increment()
的挂起函数之前,它不适用于 Kotlin Flow。如何解决这个问题?
我已经复制了你的问题,然后让它起作用了。
我需要在 gradle 中添加 implementation
和 androidTestImplementation
中的 espresso-idling-resource
库:
implementation 'androidx.test.espresso:espresso-idling-resource:3.3.0'
androidTestImplementation 'androidx.test.espresso:espresso-idling-resource:3.3.0'
这样我就可以在我的项目中创建 CountingIdlingResourceSingleton
对象:
object CountingIdlingResourceSingleton {
private const val RESOURCE = "GLOBAL"
@JvmField val countingIdlingResource = CountingIdlingResource(RESOURCE)
fun increment() {
countingIdlingResource.increment()
}
fun decrement() {
if (!countingIdlingResource.isIdleNow) {
countingIdlingResource.decrement()
}
}
}
那么当你想让测试等待时,你应该在你的代码中调用它,在我的例子中它是在显示的第一个片段的 onViewCreated()
中:
CountingIdlingResourceSingleton.increment()
当第一个流程元素到达时,我刚刚调用:
CountingIdlingResourceSingleton.decrement()
最后在你的测试中添加这个 class 让它等到 countingIdlingResource 递减:
init {
IdlingRegistry.getInstance()
.register(CountingIdlingResourceSingleton.countingIdlingResource)
}
@After
fun unregisterIdlingResource() {
IdlingRegistry.getInstance()
.unregister(CountingIdlingResourceSingleton.countingIdlingResource)
}
检查该值是否与流 (Jody) 返回的第一个值相匹配的测试有效。
可以在 github.com/jeprubio/waitflow 中找到一个工作示例,其中每 5 秒发出一个流元素,espresso 测试等待直到发出第一个元素,即 CountingIdlingResourceSingleton 递减时。
在我的应用程序中,我使用 Kotlin Flow。在我使用带有 EspressoIdlingResource.increment()
的挂起函数之前,它不适用于 Kotlin Flow。如何解决这个问题?
我已经复制了你的问题,然后让它起作用了。
我需要在 gradle 中添加 implementation
和 androidTestImplementation
中的 espresso-idling-resource
库:
implementation 'androidx.test.espresso:espresso-idling-resource:3.3.0'
androidTestImplementation 'androidx.test.espresso:espresso-idling-resource:3.3.0'
这样我就可以在我的项目中创建 CountingIdlingResourceSingleton
对象:
object CountingIdlingResourceSingleton {
private const val RESOURCE = "GLOBAL"
@JvmField val countingIdlingResource = CountingIdlingResource(RESOURCE)
fun increment() {
countingIdlingResource.increment()
}
fun decrement() {
if (!countingIdlingResource.isIdleNow) {
countingIdlingResource.decrement()
}
}
}
那么当你想让测试等待时,你应该在你的代码中调用它,在我的例子中它是在显示的第一个片段的 onViewCreated()
中:
CountingIdlingResourceSingleton.increment()
当第一个流程元素到达时,我刚刚调用:
CountingIdlingResourceSingleton.decrement()
最后在你的测试中添加这个 class 让它等到 countingIdlingResource 递减:
init {
IdlingRegistry.getInstance()
.register(CountingIdlingResourceSingleton.countingIdlingResource)
}
@After
fun unregisterIdlingResource() {
IdlingRegistry.getInstance()
.unregister(CountingIdlingResourceSingleton.countingIdlingResource)
}
检查该值是否与流 (Jody) 返回的第一个值相匹配的测试有效。
可以在 github.com/jeprubio/waitflow 中找到一个工作示例,其中每 5 秒发出一个流元素,espresso 测试等待直到发出第一个元素,即 CountingIdlingResourceSingleton 递减时。