Unit testing 执行端点';Quarkus中的单元测试?

Unit testing 执行端点';Quarkus中的单元测试?,unit-testing,junit,quarkus,quarkus-rest-client,quarkus-panache,Unit Testing,Junit,Quarkus,Quarkus Rest Client,Quarkus Panache,对于在Quarkus中执行单元测试的最佳方法,我有一些疑问 一种选择是使用mock,但我有一种感觉,使用mock我只是“让”测试覆盖率插件“开心”,但在现实中,我不使用这种方法测试任何东西 另一种选择是使用真实的数据库,如嵌入式H2数据库,但为此,我需要对单元测试进行排序(Insert、Get、Update、Delete),例如,有时我需要从另一个测试中插入ID来执行删除操作。有一些复杂的实体会给插入或删除带来一些困难。因此,使用这种方法,我将失去单元测试的概念,因为我将失去测试的相互依赖性 有

对于在Quarkus中执行单元测试的最佳方法,我有一些疑问

一种选择是使用mock,但我有一种感觉,使用mock我只是“让”测试覆盖率插件“开心”,但在现实中,我不使用这种方法测试任何东西

另一种选择是使用真实的数据库,如嵌入式H2数据库,但为此,我需要对单元测试进行排序(Insert、Get、Update、Delete),例如,有时我需要从另一个测试中插入ID来执行删除操作。有一些复杂的实体会给插入或删除带来一些困难。因此,使用这种方法,我将失去单元测试的概念,因为我将失去测试的相互依赖性

有人对这种情况有什么建议吗?
额外信息:我使用的是liquidbase、panache实体、junity。

看起来您正在寻找集成测试。我可能会选择以下选项:

  • 根据数据库类型,您可以使用内存h2,也可以使用外部服务
  • 让sql测试启动脚本用于常规数据,直接插入数据用于小型测试用例
  • 使用诸如(通常包括在初始设置中)之类的工具来执行真正的api调用
  • 如果您确实需要单元测试,那么在这种情况下,90%的时间您不需要使用数据库来测试功能。由于解耦,您可能将控制器(资源)与服务分开。因此,对于单元测试,我可能会选择:

  • 如上所述,将逻辑从网络层剥离,以便任何处理和包装输出以满足客户机的请求都不属于逻辑层。如果可能的话,将逻辑本身分割成更小的块,这将消除您对复杂数据的主要担忧
  • 对于任何依赖项,或者,或者。这对于持久性尤其重要,您需要模拟或伪造任何到数据库的连接,您不需要测试这一部分,因为它通常由库处理
  • 您可以从真正复杂的实体的文件中读取JSON对象
  • 如果你真的需要坚持,看看这个答案的第一点

  • 因此,感觉您想检查您的服务是否在更高级别上正确地完成了工作,这可能不是单元测试,希望答案会有所帮助

    您的答案让我头脑清醒,因为我试图使用集成测试逻辑创建单元测试。我认为出现这种混淆是因为我使用了
    rest-assured
    ,当我看到许多Quarkus测试使用它时,我认为这是最好的方法。但是现在我将使用Mockito和rest assured为集成测试创建一个单元测试。谢谢你的帮助。