java - Mockito - 带 Spring 的 MockSettings

标签 java xml spring mockito

我正在尝试通过 spring bean 配置设置模拟对象(使用 Mockito),但是我不知道如何为该对象设置 MockSettings。特别是我想设置对象可序列化。

以编程方式可以通过以下方式实现:

Object serializableMock = mock(Object.class, withSettings().serializable());
<bean id="object" name="object" class="org.mockito.Mockito" factory-method="mock">
    <constructor-arg value="object" />
    <constructor-arg value="org.mockito.MockSettings"> ???  </constructor-arg>
</bean>

有人可以指导我该怎么做吗?提前致谢

顺便说一句:我想使用纯 XML 配置。

最佳答案

只能通过 XML,您不能。

实际上我不建议你像往常一样在 Spring 中使用 Mockito 模拟进行测试。原因如下:

  • 通常在单元测试时,你想单独测试一个类,毕竟这是单元测试,所以 Spring DI 根本没有必要这个案例。您只需自己或通过方便的 @InjectMock 注入(inject)测试对象的合作者即可。注释。

  • 但是,如果您需要使用另一个系统(例如带有数据库的 DAO)来测试事物,那么实际上您可能需要 Spring 连接来连接到真实数据库或某些内存数据库(例如 H2)。但在本例中,您正在制作集成测试。在这种情况下,您很可能不需要模拟。

也就是说,您可能有特定的需求,并且上述观点可能与您的特定有界上下文无关。但话又说回来,在我看来,如果它是具体的,我认为自己制作一个简单的 MockSettings factory bean 并不算矫枉过正。 (甚至可以配置)。

例如您可以在应用程序的技术模块中一劳永逸地编写此代码:

public class SpringMockSettingsFactoryBean extends AbstractFactoryBean<MockSettings> {
    @Override public Class<Multimap> getObjectType() {
        return MockSettings.class;
    }

    @Override protected Multimap<String, String> createInstance() throws Exception {
        // ... your code

        return mockSettings;
    }
}

有一个项目springockito在 bitbucket 上尝试在 spring 中拥有一个以mockito为中心的命名空间。我认为该项目无法做到这一点,但框架的作者可能有兴趣实现该功能。

希望有帮助。

关于java - Mockito - 带 Spring 的 MockSettings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9325177/

相关文章:

java - Tomcat 6 中的每个 webapp 是否独立加载核心类?

java - 文件上传 + 通过 HTTP POST 参数触发 Hudson 构建

java - 是否存在 swing 可过滤 JList 组件?

java - 如何从 Java 代码向 Android 应用程序添加图像

java - 如何防止消息转到 "Dispatched Queue"

java - RestTemplate 测试时出现错误请求

php - 按字典顺序比较XPath中的两个字符串

Android - 如何将 Activity 布局膨胀成 fragment ?

java - Spring 验证注释 - 如何验证字符串中的 2 个字符条目是否是实际的美国州?

java - 在类型 'contextMessage' 的对象上找不到字段或属性 'org.springframework.webflow.engine.impl.RequestControlContextImpl'