【问题标题】:Why is my Micronaut Controller bean not handled during tests为什么在测试期间未处理我的 Micronaut 控制器 bean
【发布时间】:2019-04-25 14:45:05
【问题描述】:

我正在尝试使用 Kotlin 的 micronaut。我有这个:

package me.test

import io.micronaut.http.MediaType
import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Get
import io.micronaut.http.annotation.Produces

@Controller("/hello")
class Controller() {
    @Get("/")
    @Produces(MediaType.TEXT_PLAIN)
    fun ping(): String {
        return "hello world"
    }
}
package me.test

import io.micronaut.runtime.Micronaut

object Application {

    @JvmStatic
    fun main(args: Array<String>) {
        Micronaut.build()
                .packages("me.test")
                .mainClass(Application.javaClass)
                .start()
    }
}

我编写了以下控制器测试:

package me.test

import io.micronaut.http.client.RxHttpClient
import io.micronaut.http.client.annotation.Client
import io.micronaut.test.annotation.MicronautTest
import org.junit.jupiter.api.Test
import javax.inject.Inject

@MicronautTest(application = Application::class)
class ControllerTest {

    @Inject
    @field:Client("/")
    private lateinit var client: RxHttpClient

    @Test
    fun `should server ping with a pong`() {
        val result = client.toBlocking().retrieve("/hello")
        println(result)
    }
}

但测试失败并返回 HttpClientResponseException: Page Not Found。

我已经对此进行了调试,据我所知,在测试期间,在DefaultBeanContext.getBeanDefinitions 中,它没有找到@Controller 限定符的任何bean。当我使用 Application 类启动应用程序时,我可以看到它找到了 Controller 并使路由可用。

这几乎就是 Micronaut 的 Hello World,我不确定这里出了什么问题。

【问题讨论】:

  • 如何运行测试?如果你使用 IntelliJ - IntelliJ 的编译器不支持 Kapt(注解处理) - 所以你需要运行 gradle build 之前。

标签: kotlin micronaut


【解决方案1】:

我认为这纯粹是 IDE 相关的。我将 Intellij 设置为使用注释处理器,将构建委托给 Gradle 并使用 Gradle Test Runner。但是,您还需要删除任何现有的测试配置,然后问题就会消失。

【讨论】:

  • “您还需要删除任何现有的测试配置,然后问题就会消失” - 这部分不一定正确。您可以保留现有的测试配置。如果您在 IDE 中启用了注释处理器,那么测试配置是否委托给 Gradle 都没有关系。
猜你喜欢
  • 1970-01-01
  • 2019-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多