android - 即使添加 InstantTaskExecutorRule 后,android.os.Looper 中的方法 getMainLooper 未被模拟仍然发生

标签 android junit5 android-livedata

我收到 getMainLooper in android.os.Looper not mocked 异常。我已经添加了 InstantTaskExecutorRule 规则,但它仍然不适合我。

最佳答案

添加此类并在测试类顶部添加注释后即可正常工作。

@ExtendWith(InstantExecutorExtension::class)

class InstantExecutorExtension : BeforeEachCallback, AfterEachCallback {

    override fun beforeEach(context: ExtensionContext?) {
        ArchTaskExecutor.getInstance()
            .setDelegate(object : TaskExecutor() {
                override fun executeOnDiskIO(runnable: Runnable) = runnable.run()

                override fun postToMainThread(runnable: Runnable) = runnable.run()

                override fun isMainThread(): Boolean = true
            })
    }

    override fun afterEach(context: ExtensionContext?) {
        ArchTaskExecutor.getInstance().setDelegate(null)
    }
}

关于android - 即使添加 InstantTaskExecutorRule 后,android.os.Looper 中的方法 getMainLooper 未被模拟仍然发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70560119/

相关文章:

android - 如何使我的自定义微调器像默认微调器一样?

java - Android enableUI(bool) 文档?

spring-test - JDK 9 : JUnit 5 test compile with SpringExtension produces java. lang.NoClassDefFoundError: org/w3c/dom/ls/DocumentLS

java - Spring WebTestClient JSON LocalDate 解码

java - Junit 5 测试套件

android - 将参数从 fragment 传递到 View 模型函数

android - 我们可以在单个 Activity 中添加多个 ViewModel.observer() 方法吗

java - 我无法从 Activity 调用 Fragment 方法

java - 不幸的是 Easylearn 已停止

android - Kotlin:带实时数据的协程还是只有协程?