在 junit 测试和 spring boot 中为模型创建可重用的模拟

问题描述

我正在为 Spring Boot 应用程序编写 junit 测试用例。我有很多疑问,我在下面列出了它们。

  1. 只为服务层编写单元测试用例就够了吗?

  2. 如何重用为模型创建的存根/模拟。每个模型的创建都有很多依赖项。如果我们不重用它们,我们将一次又一次地创建相同的对象。如果我们重用如何适应所有测试用例的测试值?

  3. 在创建存根时有什么最佳实践吗?

  4. 我们是否需要为实用方法编写单元测试用例?

  5. Rest 控制器需要单元测试用例吗?

解决方法

我会尽量给出最好的一般性答案,但请记住,具体情况可能需要不同的方法。

  1. 不,一般来说,您应该测试包含可能需要维护的逻辑的所有内容,从而进行不必要的更改。
  2. 我不太确定这里的问题是什么。按照我的理解,您想编写一次存根/模拟并将它们用于多个测试;也许,您可以使用一个测试类并在@Before、@BeforeClass 注释方法中生成存根。
  3. 好吧,当提供给定输入时,存根旨在代替特定方法。因此,首先,您应该确定您的存根方法将接收哪些输入,并确保您正在传递它们(注意:如果您提供了错误的输入,存根将无法工作)。其次,您需要存根返回对象或答案。无论如何,对于多次调用该方法并且需要不同返回值的情况,您可能需要使用顺序存根。
  4. 是的,维护更改可能会导致此类方法的行为发生变化,从而严重影响产品。您应该始终使用 JUnit 来约束逻辑。无论如何,实用程序类应该是微不足道的,我不认为您很难测试它们。
  5. 就像我已经说过的,如果它包含逻辑,是的,它应该。无论如何,我记得有不同的框架可以模拟 rest 调用。

丹尼尔