2011-04-07 33 views
7

我开始测试一般的应用程序,并且我想创建几个测试以在Spring中学习Mockito。我一直在阅读一些信息,但我有一些疑问我想问一下。在Spring 3中创建单一测试

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

谢谢。

回答

14
@RunWith(MockitoJUnitRunner.class) 

同意本声明你想编写一个单元测试。单元测试正在锻炼一个班级嘲笑所有的依赖。通常,您将注入声明如下嘲笑依赖于你的测试用例:

@Mock 
private YourDependency yourDependencyMock; 

@RunWith(SpringJUnit4ClassRunner.class) 

春季亚军是为集成测试在这种类型的测试,你是(元件测试?)练习一大堆类,换句话说,你正在测试一个具有真正依赖性的类(用真实服务,DAO,内存数据库等来测试控制器)

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

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

  • 单元测试为每个类(控制器,服务的DAO)分别与嘲笑所有其他类

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

+0

这是一个非常好的解释,但有时候我只是想在同一个测试类中混合使用单元测试和集成测试......我如何获得mockito注入功能和弹簧注入?我可以使用@RunWith注释吗? – 2011-06-09 22:48:00

+0

混合Spring和Mockito是完全可能的。基本上你让Spring创建并注入你的模拟。看到这个问题:http://stackoverflow.com/questions/2457239 – 2011-06-10 06:27:50

+0

是的,但采用这种方法,你不会使用@RunWith(MockitoJUnitRunner.class) – 2011-07-06 03:45:10

相关问题