@Autowired 与 JUnit 测试

2023-12-10

我使用了 JUnit,但有些测试存在一些问题,这些测试在 Spring bean 内有 @Autowired 注释,当我引用它们时,@Autowired 的 bean 始终为 NULL。

这是示例代码:

     public class Test {

                 protected ApplicationContext ac;

                 @Before
                 public void setUp() {
                     ac = new FileSystemXmlApplicationContext("classpath:config/applicationContext.xml"
                     "classpath:config/test-datasources.xml");
                 }

                 @Test
                 public void testRun() throws Exception {
                        IManager manager =  (IManager)this.ac.getBean("manager");
                        manager.doSomething();
                 }
    }

    @Service
    public class Manager implements IManager {

            public boolean doSomething() throws Exception {
                 ParametersJCSCache parametersJCSCache = new ParametersJCSCache();
                 String paramValue = parametersJCSCache.getParameter("XPTO");
                 ...
            }
    }

    public class ParametersJCSCache extends SpringBeanAutowiringSupport {

          @Autowired
          private IParameterManager parameterManager;  //THIS IS NULL
    }

当调用 Manager 对象时,Spring 生成代理,但是当访问 @AutowiredparameterManager 时,该对象为 null,并且由于这个问题,我无法测试此方法。

知道是什么原因造成的吗?为什么对象没有被注入?它在 Web 应用程序的上下文中运行良好,但在测试上下文中始终为 NULL。


尝试使用 spring runner 来运行单元测试。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:config/applicationContext.xml",
                 "classpath:config/test-datasources.xml"})
public class MyTest {

   @Autowired private IManager manager;

   @Test public void someTest() {
     assertNotNull(manager);
   }
}

它只会在需要时加载配置一次,并且会自动装配您的 junit 类

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

@Autowired 与 JUnit 测试 的相关文章

随机推荐

  • ListView QML 的 roleName 中的 QSqlQueryModel 引用错误

    我想从我的 SQlite 数据库中获取模型 当我在 QSqlQueryModel 中设置查询时 我可以获得行数 列数等 但是每列内的数据我有一个 ReferenceError 试图获取柱子 cpp代码 data base users QSq
  • AVPlayer 在 iPhone 上不会在结束中断时恢复播放,但在 iPad 上会恢复播放

    我正在为 iPhone 和 iPad 编写一个广播应用程序 在处理中断的暂停和播放音频时遇到一些奇怪的行为 我正在使用 AVAudioSession 委托方法beginInterruption and endInterruption分别到p
  • ID3 Java 枚举树

    我正在尝试制作一个非二元学习树 它是 ID3 算法的简化版本 为此 我尝试使用枚举 因为有几个参考文献教授枚举层次结构 但我在将枚举转移到创建树所需的函数时遇到了麻烦 我已经尽我所能地设置了树所需的一切 但我在树的初始构建方面遇到了麻烦 首
  • c中int和short的行为

    我想知道以下代码输出的原因是什么 unsigned short a 10 aa 1 if a gt 1 printf surprise else printf No surprise 这给出了输出 惊喜 unsigned int a 10
  • 避免来自 Java 标准输入流的控制序列(如 ^[[C)

    Code import java util Scanner public class Try public static void main String args Scanner sc new Scanner System in Syst
  • 在 PHP 中执行存储过程后调用 odbc_fetch_array 会出现错误 [Microsoft][ODBC SQL Server Driver]无效描述符索引

    因此 我尝试使用 ODBC 在 SQL 数据库中执行存储过程 但它返回错误 odbc fetch array function odbc fetch array SQL error Microsoft ODBC SQL Server Dri
  • 如何在一个集合视图源上逐个应用多个过滤器函数(AND 关系)

    我一直在使用绑定到列表视图的 Collection View Source 对象 而 CVS 是 Observable Collection 对象之上的视图 我知道如何使用以下技术应用过滤器 cvs Filter new FilterEve
  • std::string 相当于具有空字符的数据?

    我想读取一个二进制文件并使用类似的东西std string自动调整缓冲区大小等 我正在使用 Visual C 我有什么选择 The std string类已经处理带有嵌入 NUL 字符的数据 您遇到什么问题 请注意 当使用 c str 方法
  • dropna 后 Nans 未删除

    我有一个 400 x 25 的数据框 我应该从数据集中删除所有 Nans 然后从 25 列中仅选择 3 列进行处理 我已经使用以下方法完成了此操作 df1 dropna axis 0 df2 df1 loc bgr wc rc df2 rc
  • 有限制的 OWL 类型推断

    我正在使用 FaCT 和一个简单的本体研究 Protege 4 的 OWL 限制概念 假设我有一个人foo班级的Something Something a owl Class foo a Something owl NamedIndivid
  • SAPUI5 智能表:如何将我自己的列注入智能表、默认列、定义格式化程序和定义聚合列

    我正在使用智能表 我想了解以下有关此事的信息 如何使某些列默认可见 我们如何将自己的列注入到智能表中 比如我们想显示 基于性别 男性或女性 的图标 我们如何设置聚合列 例如名称 名字 姓氏 如何定义聚合列的排序和过滤 XML View
  • 从 gridview 中删除行

    我有 2 个表 MachineGroups 和 Machines MachineGroups 有列 MachinegroupID MachineGroupName MachineGroupDesc 机器有专栏 MachineGroupID
  • 如果特定命令失败,请勿中止脚本

    我正在运行我的脚本 bin bash eu 每当出现问题时 就会根据需要中止脚本 但有时我预计其中一个命令最终会失败 我想告诉bash忽略失败条件 在make您可以使用以下命令忽略一个命令的状态 command 有类似的东西吗bash 唯一
  • 如何将c/c++编译为ms-dos .com程序?

    我将 Code Blocks 与 GNU GCC 编译器一起使用 我的问题是 有没有办法将 c c 代码编译为 ms dos 16 位 com 可执行格式 我尝试设置构建选项并在网上搜索编译器参数 但我找不到任何东西 您当然可以将 C 和
  • 地理定位 SQL 查询未找到确切位置

    我已经测试我的地理位置查询一段时间了 直到现在我还没有发现任何问题 我试图搜索给定半径内的所有城市 通常我会使用该城市的坐标来搜索该城市周围的城市 但最近我尝试在一个城市周围搜索 发现城市本身没有返回 我的数据库中有这些城市的摘录 city
  • Java SQL 日期偏差 1 天

    我正在使用与我位于同一时区的 MySQL 服务器 我试图将 java util Date 插入数据库中的类型列DATE使用以下代码 SimpleDateFormat dateFormat new SimpleDateFormat yyyy
  • 使用鼠标在 python tkinter 画布上绘制并获取指向列表的点?

    我正在使用 tkinter 开发 Python 应用程序 我想要做的是在画布坐标上绘制 并将点记录到列表中 以便稍后进行计算 如果不可能 您会推荐任何其他可以做到这一点的工具或 GUI 平台吗 编辑 到目前为止 我拥有的是一个可以从列表中获
  • 从角色授权更改为声明授权

    我有一个使用 ASP NET 会员资格构建的 Web 表单应用程序 我成功迁移到身份 我现在想使用Claims授权而不是Roles授权 但是老用户的Role信息已经迁移到了AspNetUserRoles数据库中的表 但AspNetUserC
  • 在服务器上找不到路径错误的一部分

    我想每天运行一个调度程序 所以我创建了一个Windows application并将其存储到服务器上 这在我的本地计算机上工作正常 但我收到路径错误 找不到路径的一部分 C Windows System32 有了这个 我认为可能存在一些与路
  • @Autowired 与 JUnit 测试

    我使用了 JUnit 但有些测试存在一些问题 这些测试在 Spring bean 内有 Autowired 注释 当我引用它们时 Autowired 的 bean 始终为 NULL 这是示例代码 public class Test prot