【问题标题】:Using Spring JUnit4 and JMock together一起使用 Spring JUnit4 和 JMock
【发布时间】:2009-11-18 14:40:32
【问题描述】:

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

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

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

谢谢,

理查德

【问题讨论】:

    标签: java spring junit jmock


    【解决方案1】:

    您可以在测试结束时显式调用context.assertIsSatisfied(),例如在@After 方法中。

    jmock.org 站点上,选择任何代码示例上的“其他”选项卡,文档将向您展示如何在没有 JUnit 框架集成的情况下使用 jMock。

    jMock 的下一个版本将支持 JUnit 4.7 中的新“规则”机制,因此您无需使用自定义测试运行器。

    【讨论】:

    • 最新版本的 JMock 有一个 @Rule 选项,JUnitRuleMockery,它避免了对 runner 的需要
    【解决方案2】:

    如果问题与@RunWith 有关,您可以改用JMockit Expectations API。 它与 jMock 类似,期望也记录在 new Expectations() {...} 块内,但不需要使用 @RunWith(也不需要基本测试类)。 另外,没有封装期望块的context.checking(...)方法调用。

    【讨论】:

      【解决方案3】:

      我认为您在这里也可能遗漏了一点。对于 unit 测试,我希望精确控制被测对象的构造方式,这意味着将已知实例作为协作者传递。换句话说,如果我需要一个对象,那么我会在测试中创建它并传递它。调用 Spring 似乎有点矫枉过正。

      另一方面,如果我在进行某种集成测试,我会需要 Spring bean,以了解整个事物如何连接在一起或针对第三方组件进行测试。

      【讨论】:

        猜你喜欢
        • 2010-09-18
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多