将 Mockito 模拟注入 Spring bean

2024-05-03

我想将 Mockito 模拟对象注入到 Spring (3+) bean 中,以便使用 JUnit 进行单元测试。我的 bean 依赖项当前是通过使用注入的@Autowired私有成员字段上的注释。

我考虑过使用ReflectionTestUtils.setField但我希望注入的 bean 实例实际上是一个代理,因此没有声明目标类的私有成员字段。我不希望为依赖项创建公共设置器,因为随后我将纯粹出于测试目的修改我的界面。

我已经关注了一些由 Spring 社区提供,但模拟未创建并且自动装配失败:

<bean id="dao" class="org.mockito.Mockito" factory-method="mock">
    <constructor-arg value="com.package.Dao" />
</bean>

我目前遇到的错误如下:

...
Caused by: org...NoSuchBeanDefinitionException:
    No matching bean of type [com.package.Dao] found for dependency:
    expected at least 1 bean which qualifies as autowire candidate for this dependency.
    Dependency annotations: {
        @org...Autowired(required=true),
        @org...Qualifier(value=dao)
    }
at org...DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(D...y.java:901)
at org...DefaultListableBeanFactory.doResolveDependency(D...y.java:770)

如果我设置constructor-arg值无效 启动应用程序上下文时不会发生错误。


最好的办法是:

<bean id="dao" class="org.mockito.Mockito" factory-method="mock"> 
    <constructor-arg value="com.package.Dao" /> 
</bean> 

Update
在上下文文件中,此模拟必须在声明依赖于它的任何自动装配字段之前列出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 Mockito 模拟注入 Spring bean 的相关文章

随机推荐

  • TFS自定义签入策略调试

    我创建了一个自定义签入政策 如下面的链接所示 http msdn microsoft com en us library bb668980 aspx http msdn microsoft com en us library bb66898
  • 范围对象 - 为什么有时我不能使用工作表

    在这个线程中 Excel VBA 查找特定工作表上范围内的最大值 https stackoverflow com questions 31906571 excel vba find maximum value in range on spe
  • 如何在 Rollup 中配置从多个输入文件仅生成单个输出文件?

    配置Rollupjs生成库时 如果输入是由多个javascript文件组成的数组 我们如何才能将这些输入生成为一个输出 js 文件呢 export const lgService input src app services livegiv
  • 如何在IE8及以下浏览器中应用边框半径?

    我想知道如何将 border radius 应用于 IE8 及以下 IE8 浏览器 我知道 border radius 是 HTML5 的一项功能 而 IE8 不支持它 我发现通过使用 htc 我们可以实现这一点 但是通过使用 htc 我遇
  • Node.js npm mssql 函数返回未定义

    我使用 mssql 和 node js 连接到 sql server 数据库 我试图通过将连接代码包装在具有一个查询参数的函数中来减少代码 当我从 router get 函数中的 with 调用该函数时 它返回未定义 任何帮助将非常感激 f
  • WPF - 非常基本的 ListBox.ItemTemplate 问题

    好吧 这是一个看似简单得令人尴尬的问题 但却让我发疯 我正在学习 DataTemplate 并尝试将一个非常非常简单的 ItemTemplate 应用于 ListBox 然而 当我运行我的应用程序时 模板被完全忽略 我只得到标准外观的列表框
  • 获取SSAS立方体上次处理时间

    在 Excel 中 我与数据多维数据集建立 Analysis Services 连接 我希望能够通过向用户显示最后一次多维数据集处理时间发生的时间来向用户展示数据的最新情况 在 SQL Server Management Studio SS
  • 使用 System.loadLibrary() 时出现不满意的链接错误?

    由于某种原因 我在我的 java 应用程序中遇到了令人讨厌的不满意链接错误 这是所涉犯罪者 System loadLibrary psjw 尽管库 psjw dll 显然与此类位于同一源包中 请帮忙 确保 psjw dll 位于您的 PAT
  • 事件溯源:在重放事件并监听新传入事件时避免项目重复事件

    在需要构建新视图的场景中 我们可以重播来自活动商店 结果 我们将投影出新的视图 因此 我们的想法是部署一个新的投影 该投影可以投影所有旧事件 通过重播 并监听新传入的事件并投影它们 我认为在读取旧事件和收听新传入事件时可能会发生比赛条件 因
  • 如何在android中的google(设备)本机应用程序上添加自定义按钮?

    我想在谷歌 设备 的本机应用程序上添加一个按钮 例如 谷歌地图 使用此按钮我想打开我的应用程序 我已经做了一些相关工作 Using 无障碍服务 https developer android com reference android ac
  • 如何以 HDF5 格式提供 caffe 多标签数据?

    我想将 caffe 与矢量标签一起使用 而不是整数 我检查了一些答案 似乎 HDF5 是更好的方法 但后来我陷入了这样的错误 precision layer cpp 34 检查失败 outer num inner num bottom 1
  • 如何获取 Windows Phone 的设备令牌 ID 以进行推送通知?

    我正在使用 Visual Studio 2012 在手机间隙 移动 jquery 中创建 Windows Phone 8 应用程序 我想从设备获取设备令牌 id 以用于推送通知 谁能指导我如何获取 Windows Phone 8 的设备令牌
  • LINQ to SQL 选择“按多列区分”并返回整个实体

    我正在使用第三方数据库 需要为我正在研究的特定市场选择一组不同的数据 每个市场的数据都是相同的 因此将其全部引入是多余的 并且我不想硬编码围绕它的任何逻辑 因为我们正在与供应商合作解决问题 但我们需要一个修复程序与供应商合作修复以及数据库当
  • 如何将 C++ flex 与 C++ Bison 连接起来?

    我正在尝试将 C flex 与 C bison 连接起来 但我被难住了 Bison 3 8 1 手册有一个带有 C Flex 的 C Bison 示例 Flex 2 6 4 没有示例 我试图解决的问题是如何向 C 或 C Bison 提供指
  • MySQL如何获取可能重叠日期的开始/结束日期之和

    我有一个开始 结束日期表 我想按 id 对其进行分组并对每个 id 的总时间进行求和 例如 fk id start end 3 2014 03 21 10 02 2014 05 01 08 05 3 2014 06 05 05 00 201
  • 如何在Keystone.js List Map中指定多个字段?

    想知道如何在 Keystone js List Map 中指定多个字段 例如 基于 Keystone 数据模型文档 http keystonejs com docs database http keystonejs com docs dat
  • 对 Mongo 子文档数组求和

    db test3 find id 1 results result cost priceAmt 100 我尝试了以下方法但没有成功 db test3 aggregate group id total sum results result c
  • 流范围导航到起始页不起作用

    这与其说是一个问题 不如说是一个注释 对于 Glassfish4 在 JEE7 应用程序中 我尝试使用编程流定义 用 Produces FlowDefinition 注释的 java 类 来使用流范围 我使用 h commandButton
  • 使用 sql server 数据库部署 C# 应用程序?

    谁能告诉我使用 SQL Server 数据库部署 C 应用程序的准确方法 我想在客户端的计算机上运行我的应用程序 它正在我的计算机上运行 但在客户端的计算机上显示错误 我已经在客户端计算机上安装了 SQL Server 2012 我对部署知
  • 将 Mockito 模拟注入 Spring bean

    我想将 Mockito 模拟对象注入到 Spring 3 bean 中 以便使用 JUnit 进行单元测试 我的 bean 依赖项当前是通过使用注入的 Autowired私有成员字段上的注释 我考虑过使用ReflectionTestUtil