8

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

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

谢谢。

4

1 回答 1

14
@RunWith(MockitoJUnitRunner.class)

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

@Mock
private YourDependency yourDependencyMock;

@RunWith(SpringJUnit4ClassRunner.class)

Spring runner 用于集成测试组件测试?)在这种类型的测试中,您正在执行一大堆类,换句话说,您正在测试具有真实依赖关系的单个类(使用真实服务、DAO、in-内存数据库等)

您可能应该在您的应用程序中同时拥有这两个类别。尽管建议进行更多的单元测试并且只进行少量的冒烟集成测试,但我经常发现自己几乎只编写集成测试更有信心。

至于你的第二个问题,你应该有:

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

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

于 2011-04-07T16:27:55.770 回答