gpt4 book ai didi

java - Micronaut 单元测试 : need clarification on @MicronautTest

转载 作者:行者123 更新时间:2023-12-01 23:27:41 25 4
gpt4 key购买 nike

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

我有一个简单的应用程序,只有一个 Controller (返回 hello)。
现在我想测试这个端点。来自 springboot,我期待 micronaut 有一些像 SpringRunner 这样的运行器类,但我找不到。 micronaut中是否有用于运行测试的runner类?

来自文档here我发现我可以使用 HTTPClient 测试我的其余端点。我尝试了这两种方法

  1. 低级 HttpClient
  2. 编译时 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 中有等效的吗?

我使用的是 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

关于java - Micronaut 单元测试 : need clarification on @MicronautTest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58301944/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com