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

Micronaut单元测试:需要对@Micronauttest进行澄清

尉迟远
2023-03-14

我正在尝试micronaut,我在理解如何进行单元测试方面遇到了一些困难。

我有一个只有一个控制器的简单应用程序(它返回hello)。
现在我要测试这个endpoint。来自springboot的我希望micronaut有一些runner类,比如springrunner,但我找不到。micronaut中有运行测试的runner类吗?

从这里的文档中,我看到可以使用HttpClient测试restendpoint。我两个都试了

  1. 低级HttpClient
  2. Compiletime HttpClient

这里是我所拥有的测试类的一个片段

@MicronautTest
class HelloControllerSpec {
    @Inject
    EmbeddedServer server; 

    @Inject
    @Client("/")
    HttpClient client; 

    @Test
    void testHelloWorldResponse() {
          //client and server are null
           .........
    }
}  

而且

@MicronautTest 
public class HelloClientSpec  {

    @Inject
    HelloClient client; 

    @Test
    public void testHelloWorldResponse(){
        //client is null
   }
}

据我观察,注释@micronauttest似乎没有什么作用。与@inject@client的情况相同,当我运行测试时,所有字段都为空。所以我想知道@micronauttest到底是做什么的?

使其正常工作的唯一方法是显式启动服务器(embeddedserver上的@inject不执行任何操作),如下所示

server = ApplicationContext.run(EmbeddedServer.class);
helloClient = server.getApplicationContext().getBean(HelloClient.class);

即使这样,它也会启动一个服务器实例。这不是我想要的。因为我不想启动服务器进行单元测试。另外,我不想从应用程序上下文中以这种方式获取bean。为什么@inject@client@embeddedserver在我的情况下不起作用,我是不是漏了什么?

在springboot的情况下,我只能单独测试weblayer(使用mockmvc和springboottest),而不是启动整个应用程序上下文。在Micronaut中有等价物吗?

我使用的是Micronaut1.0.2

共有1个答案

谯志诚
2023-03-14

对于任何遇到这个问题的人。这里有几点提示。这就是我的案子解决问题的办法。谦虚地提一下杰夫·斯科特·布朗,他的建议把我推向了正确的方向。

>

  • 请检查micronaut版本,
    我已安装了micronaut1.0.2版本,通过该版本生成应用程序。但我所关注的文档是最新版本的1.2.3

    请检查pom或构建文件中的junit版本。如果您使用最新版本(1.2.3)生成应用程序,您将拥有Junit-5和Jupiter依赖项,如果您使用的是较旧版本(1.0.2),您将拥有JUnit4。
    要使注释@micronauttest工作,您需要Junit5

  •  类似资料:
    • 问题内容: 如何在单元测试中测试 hashCode()函数? 问题答案: 每当我覆盖equals和hash代码时,我都会按照Joshua Bloch在“ Effective Java”第3章中的建议编写单元测试。我确保equals和hash代码是自反的,对称的和可传递的。我还确保“不等于”对所有数据成员均正常工作。 当我检查对equals的调用时,我还要确保hashCode的行为符合预期。像这样:

    • 问题内容: 我一直在学习AngularJS,并且在单元测试方面进展非常顺利,但是我遇到了一个棘手的问题。 假设我有一个简单的表格,例如: 如果我正在测试类似控制器的东西,我知道我会这样写(使用Jasmine + Karma): 但是我不知道我需要注入哪些服务,也没有运气在指南或文档中找到有关单元测试的文档。 一个单元如何在Angular中测试表单? 问题答案: 我不认为这是对此类内容进行单元测试的

    • 本文向大家介绍对Angular.js Controller如何进行单元测试,包括了对Angular.js Controller如何进行单元测试的使用技巧和注意事项,需要的朋友参考一下 一、写个简单的Angular App 在开始写测试之前,我们先写一个简单的计算App,它会计算两个数字之和。 代码如下: 二、简单说说里面涉及的一些基本概念: 创建一个 module 什么是angular.modul

    • 问题内容: 如您所知,异常情况下会引发异常。那么如何模拟这些异常呢?我觉得这是挑战。对于此类代码段: 有人有好主意吗? 问题答案: 其他答案已经解决了如何编写用于检查是否引发异常的单元测试的一般问题。但是我认为您的问题实际上是在询问如何获取代码以首先引发异常。 以您的代码为例。在简单的单元测试的环境中,很难在内部引发异常。问题是,为了使异常发生,代码(通常)需要在网络中断的计算机上运行。安排在单元

    • 我正在尝试对<code>java进行单元测试。lang类。 背景:到目前为止有效的方法 这不是真正的标准,但是将 } 中 (在 Ubuntu 上)中提供的源代码和 rt.jar 中提供的类复制到 中非常简单,然后 JaCoCo maven 插件可以看到它们并为某些类生成合适的输出。 例如,我得到了一些关于来源的报道。 但是我无法覆盖< code>java.lang中的类。调用< code>Byte