当前位置: 首页 > 知识库问答 >
问题:

单元测试失败:java.lang.RuntimeException:Android.os.Looper中的方法getMainLooper未被嘲弄

呼延曜灿
2023-03-14

我遇到了一个挑战,当我单独运行测试时,测试通过了,但当我运行所有测试时,测试失败了,它会显示以下错误消息:

java.lang.RuntimeException:Android.os.Looper中的方法getMainLooper未被嘲弄。详见http://g.co/androidstudio/not-mocked。

在Android.os.looper.GetMainLooper(looper.java)在Retrofit2平台$Android$MainThreadeDexecutor.(platform.java:172)在Retrofit2平台$Android.DefaultCallbackExecutor(platform.java:145)在Retrofit2平台$Android.DefaultCallbackExecutor(platform.java:585)在com.andela.mrm.notifications.slackService.getAPI(slackService.kt:26)在luate(InvokeMethod.Java:17)在org.junit.runners.ParentRunner.RunLeaf(ParentRunner.Java:325)在org.junit.runners.BlockJunit4ClassRunner.Runchild(BlockJunit4ClassRunner.Runchild(Java:78)在org.junit.runners.BlockJunit4ClassRunner.Runchild(Java:57)在org.junit.runners.ParentRunner(Java:57)在org.junit.runers.ParentRunner$000(ParentRunner.Java:58)在org.junit.runners.ParentRunner.268)在org.junit.runners.ParentRunner.run(ParentRunner.Java:363)在org.junit.runner.junitCore.run(ParentRunner.Java:137)在com.intellij.junit4.junit4ideateStrunner.startRunnerWithArgs(junit4ideateStrunner.Java:68)在com.intellij.rt.execution.junit.ideateStrunner

下面是我要测试的改装实例:

class SlackService {

    private var retrofit: Retrofit? = null

    /**
     * This method creates a new instance of the API interface.
     *
     * @return The API interface
     */
    val api: SlackApi
        get() {
            val baseURL = "https://hooks.slack.com/"
            val client = ApiService.getOkHttpClient()
            if (retrofit == null) {
                retrofit = Retrofit.Builder()
                        .baseUrl(baseURL)
                        .client(client)
                        .build()
            }
            return retrofit!!.create(SlackApi::class.java)
        }
}

然后,这是一个针对改型实例的测试:

class SlackServiceTest {

    @Test
    fun getAPI() {
        val slackService = SlackService()
        assertNotNull(slackService.api)
    }
}

我通过这里看到了一些类似的问题,但它们与RxJava有关,并且不使用它,我该如何帮助呢?

谢谢

共有1个答案

胥智
2023-03-14

其实,我终于得到了答案,就在下面的链接里:答案

 类似资料:
  • TrendingViewModelTest 趋势视图模型 TrendingRepository: 在内部启动了一个Rxjava调用,它还挂钩到“AndroidSchedulers.MainThread()”,这可能是导致它的原因。

  • 我正在为一个具有HTTP get、put和post方法模块的应用程序编写django unittests。我一直在引用rest_framework的APITestCase方法来为POST方法编写unittest。 ========================================================================= Traceback(最近调用最后):文

  • 编辑:供未来读者使用。我不知道这个问题是否对你有很大的帮助。有趣的逻辑已经发生了很大的变化,所以我关闭了这个问题,但不会删除它。 我正在尝试为我的ViewModel编写一些单元测试。我正在使用Mockk和junit5。 应该发生的事情:模拟存储库返回fakeresponse(我称之为VM中的乐趣),它将livedata设置为假响应数据。 实际发生的情况: 这就是考验 这是测试中延长的两个类 这是苏

  • 我试图在我正在编写的脚本中测试错误处理。如果异步函数fetchBar失败,我将模式匹配失败案例,然后返回包含失败结果的成功未来。 然而,当我对这个流进行单元测试时,我在测试失败案例时遇到了麻烦。我在fetchBar上打了一个存根,以返回失败的future,如下所示。 但是我注意到fetchedBar返回的是成功而不是失败。为什么会这样,我如何存根fetchBar函数来创建一个失败的尝试?

  • 我不熟悉匕首。我创建了一个非常简单的单元测试,试图理解我应该如何使用dagger。不幸的是,它失败了。我可能还不了解匕首的一些基本原理。 而我的测试课失败了 我认为dagger会将B注入A,因为A希望注入B,DaggerModule包含一个@Providers注释方法,该方法创建B。 更新: 我发现当我像这样编写模块类时 将B注入A作品中。然而,我不理解为什么当模块有一个构造a实例的带注释的方法时

  • spring.datasource.hikari.schema=demo 错误: 原因:org.springframework.beans.factory.beanCreationException:创建类路径资源[org/springframework/boot/autocconfigure/orm/jpa/hibernatejpaconfiguration.class]中定义的名为“Entit