在Spring 3中创建单一测试

Jua*_*llo 7 java spring unit-testing mockito spring-3

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

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

谢谢.

Tom*_*icz 14

@RunWith(MockitoJUnitRunner.class)
Run Code Online (Sandbox Code Playgroud)

通过此声明,您可以编写单元测试.单元测试正在运行一个模拟所有依赖项的类.通常,您将在测试用例中注入如此声明的模拟依赖项:

@Mock
private YourDependency yourDependencyMock;
Run Code Online (Sandbox Code Playgroud)
@RunWith(SpringJUnit4ClassRunner.class)
Run Code Online (Sandbox Code Playgroud)

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

您应该在应用程序中同时拥有这两个类别.虽然建议有更多的单元测试和少量的烟雾整合测试,但我经常发现自己更有信心只编写集成测试.

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

  • 每个类(控制器,服务,DAO)的单元测试与模拟所有其他类分开

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