当我运行Junit4测试时,我使用@RunWith(SpringJUnit4ClassRunner.class)
注释,这允许我将Spring Beans注入我的测试类。
我想使用JMock 2框架(我没有真正的经验),但我看到的示例需要以下@RunWith(JMock.class)
。
所以我的问题是我可以将JMock和Spring与我的JUnit4测试一起使用,如果是这样的话?例如,是否有一个Spring测试运行器也支持JMock?
谢谢,
理查德
答案 0 :(得分:6)
您可以在测试结束时使用context.assertIsSatisfied()
方法明确调用@After
。
在jmock.org站点上,选择任何代码示例中的“其他”选项卡,文档将向您展示如何在没有JUnit框架集成的情况下使用jMock。
jMock的下一个版本将支持JUnit 4.7中的新“规则”机制,因此您不需要使用自定义测试运行器。
答案 1 :(得分:1)
如果问题与@RunWith
有关,则可以改为使用JMockit Expectations API。
它与jMock类似,期望也记录在new Expectations() {...}
块内,但不需要使用@RunWith
(也不需要使用基本测试类)。
此外,没有context.checking(...)
方法调用包装期望块。
答案 2 :(得分:1)
我想你可能也错过了一点。对于单元测试,我想要精确控制如何构建被测对象,这意味着将已知实例作为协作者传递。换句话说,如果我需要一个对象,那么我在测试中创建它并将其传入。调用Spring似乎有点矫枉过正。
另一方面,如果我正在进行某种集成测试,我会需要Spring bean,以查看整个事物是如何连接在一起还是测试第三方组件。