Почему мой компонент Micronaut Controller не обрабатывается во время тестов - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь использовать микронавта из Котлина. У меня есть это:

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. Когда я запускаю приложение, используя мой класс Application, я вижу, что оно находит Controller и делает маршрут доступным.

Это в значительной степени Hello World для Micronaut, я не уверен, что здесь происходит не так.

1 Ответ

0 голосов
/ 29 апреля 2019

Я думаю, это связано с IDE.У меня есть Intellij, настроенный для использования процессоров аннотаций, для делегирования сборок в Gradle и для использования Gradle Test Runner.Однако вам также необходимо удалить все существующие тестовые конфигурации, и тогда проблема исчезнет.

...