一尘不染

在Spring 3中创建单一测试

java

我通常开始测试应用程序,我想创建一些测试以在Spring中学习Mockito。我一直在阅读一些信息,但是我想问一些普遍的疑问。

  1. 我已经看到了Mockito测试,它们使用 @RunWith(MockitoJUnitRunner.class) 注释了该类的测试,而在Spring文档中,它使用了 @RunWith(SpringJUnit4ClassRunner.class) 。我不知道它们之间有什么区别,我应该在测试使用Mockito的Spring应用程序中使用哪个。
  2. 由于我还没有看到任何具有测试功能的实际应用程序,因此我想知道开发人员可以进行的典型测试。例如,在针对用户的典型CRUD应用程序中(可以创建,更新用户…),任何人都可以通过通常的测试来完成此操作。

谢谢。


阅读 177

收藏
2020-12-03

共1个答案

一尘不染

@RunWith(MockitoJUnitRunner.class)

使用此声明,您应该编写一个 单元测试 。单元测试使用一个模拟所有依赖项的类。通常,您将在测试案例中注入这样声明的模拟依赖项:

@Mock
private YourDependency yourDependencyMock;

@RunWith(SpringJUnit4ClassRunner.class)

SpringRunner是用于 集成测试组件测试
?)的。在这种类型的测试中,您要行使大量的类,换句话说,您正在测试具有真实依赖项的单个类(使用真实服务,DAO,内存数据库等)

您的应用程序中可能应该同时具有两个类别。虽然建议更多的单元测试和很少的烟雾集成测试,但是我经常发现自己对只编写集成测试更加有信心。

关于第二个问题,您应该具有:

  • *对每个类别(控制器,服务,DAO)分别进行 *单元测试 ,并模拟所有其他类别

  • *整个CRUD操作的 *集成测试 。例如,创建一个练习控制器,服务,DAO和内存数据库的用户。

2020-12-03