Micronaut 单元测试:需要对@MicronautTest 进行说明

Micronaut unit testing : need clarification on @MicronautTest

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

我有一个只有一个控制器的简单应用程序(returns 你好)。
现在我想测试这个端点。来自 springboot,我期待 micronaut 有一些像 SpringRunner 这样的 运行ner class,但我找不到任何东西。 micronaut 中是否有用于 运行ning 测试的 运行ner class?

从文档 here 我看到我可以使用 HTTPClient 测试我的其余端点。

我都试过了
  1. 低级 HttpClient
  2. CompileTime HttpClient

这是测试的片段 class我有

@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 到底是做什么的?

我让它工作的唯一方法是显式启动服务器(@InjectEmbeddedServer 上不做任何事情)像这样

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

即便如此,它也会启动一个服务器实例。这不是我想要的。因为我不想启动服务器进行单元测试。我也不想以这种方式从应用程序上下文中获取 bean。 为什么 @Inject@Client@EmbeddedServer 在我的情况下不起作用,我在这里遗漏了什么吗?

如果是 springboot,我只能单独测试 weblayer(使用 mockmvc 和 springboottest),而不是启动整个应用程序上下文。 micronaut 中有对应的吗?

我正在使用 micronaut 1.0.2

对于遇到此问题的任何人。这里有一些提示。这就是解决我的问题的方法。对 Jeff Scott Brown 的谦虚提及,他的建议将我推向了正确的方向。

  1. 请检查micronaut版本,
    我安装了 micronaut 1.0.2 版本,通过它我生成了应用程序。但是我正在关注的文档是最新版本,即 1.2.3

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