在Spring 3中创建单一测试

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

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

谢谢。

@RunWith(MockitoJUnitRunner.class) 

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

 @Mock private YourDependency yourDependencyMock; 

 @RunWith(SpringJUnit4ClassRunner.class) 

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

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

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

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

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