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

为什么我的Micronaut控制器bean在测试期间没有被处理

施靖
2023-03-14

我在试着用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.GetBeanDefinition中没有找到@Controller限定符的bean。当我使用application类启动应用程序时,我可以看到它找到controller并使路由可用。

这几乎是微型机器人的Hello世界,我不确定这里出了什么问题。

共有1个答案

令狐珂
2023-03-14

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

 类似资料:
  • 返回文件的URL。 starfxdemodoc.fxml为: 而StarfXDemodocController.java是这样的: 有谁能帮我一下吗? 编辑/更新: 根据james_d的评论(谢谢你James,显然我已经盯着这个问题太久了……),我修复了控制器中的明显错误,并将SimNameField设置为TextField,而不是Label(并更新了上面的代码块以反映这一点)。我还将异常处理更改

  • 我正在开发一个小应用程序,只是为了自己尝试Spring Boot。它有五个不同的模块(eclipse项目): 模型——包含实体类、DTO和映射器以在它们之间切换 数据--包含存储库 服务——包含服务及其实现 reserve management--包含预订控制器和spring应用程序本身 人员管理-包含人员数据的控制器和Spring应用程序本身 如果我启动这两个应用中的任何一个,它们都可以正常运行

  • 我想用springboot和Mongo数据库对话。 它使用spring-boot-starter-data-mongoDB并自动配置默认bean,这确实允许我的MongoRepository类与DB进行对话。 但是,我想重写默认值。我可以使用application.properties,但我需要能够在应用程序启动时将连接参数作为选项在命令行上传递。 我已经尝试改变端口以破坏它,我已经将debug添

  • 我使用surefire和failsafe分别执行单元测试和集成测试。所有测试都位于文件夹中。到目前为止,我有一个集成测试类,其测试方法(用@test注释)在所有单元测试运行时从不执行。这是我的pom的摘录。xml: 我使用maven目标来运行测试。

  • 我正在尝试将一个梅文Spring靴(2.3.12)应用程序从JUnit4转换为JUnit5。我已经阅读了很多关于如何做到这一点的不同帖子。 我能够在Eclipse中执行我的JUnit5测试。 我的问题是我无法让Maven Surefire执行我的JUnit5测试。我尝试了各种配置变体。当它到达Surefire步骤时,它只执行我以前的JUnit4测试,并且简单地忽略任何JUnit5测试。我已经验证了

  • 我已经建立了一个asp.netmvc网页。我的所有操作,如:创建、编辑等...有自己的视图,除了删除,因为我正试图在Bootstrap的帮助下弹出一个模态。我通过jQuery/JavaScript向modal传递一个id,并将asp-action作为表单的属性,理论上它应该可以工作,但事实并非如此。 索引视图: 删除控制器中的操作: Javascript: 输入获取id作为名称的值: 调试时,它不