一起使用Spring JUnit4和JMock

时间:2009-11-18 14:40:33

标签: java spring junit jmock

当我运行Junit4测试时,我使用@RunWith(SpringJUnit4ClassRunner.class)注释,这允许我将Spring Beans注入我的测试类。

我想使用JMock 2框架(我没有真正的经验),但我看到的示例需要以下@RunWith(JMock.class)

所以我的问题是我可以将JMock和Spring与我的JUnit4测试一起使用,如果是这样的话?例如,是否有一个Spring测试运行器也支持JMock?

谢谢,

理查德

3 个答案:

答案 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,以查看整个事物是如何连接在一起还是测试第三方组件。