Java 自动连接Springbean,它是另一个Bean的子类

Java 自动连接Springbean,它是另一个Bean的子类,java,spring,unit-testing,spring-mvc,Java,Spring,Unit Testing,Spring Mvc,我现在有一个Java7/SpringMVC项目。我有一个类a。我想测试a的逻辑,所以我创建了一个名为B的模拟类,该类扩展了a并获取其受保护的方法 我有一个application-config.xml文件和一个unit-testing-config.xml文件 在应用程序配置中,我为a创建一个bean并设置bean id。在单元测试配置中,我用B覆盖该定义 我已经记录了调用哪个构造函数,它是A。但是当我删除B的扩展部分并重新运行时,spring会创建一个B的实例。有没有办法明确地告诉spring我

我现在有一个Java7/SpringMVC项目。我有一个类a。我想测试a的逻辑,所以我创建了一个名为B的模拟类,该类扩展了a并获取其受保护的方法

我有一个application-config.xml文件和一个unit-testing-config.xml文件 在应用程序配置中,我为a创建一个bean并设置bean id。在单元测试配置中,我用B覆盖该定义

我已经记录了调用哪个构造函数,它是A。但是当我删除B的扩展部分并重新运行时,spring会创建一个B的实例。有没有办法明确地告诉spring我希望实例化子对象。我的定义如下:

<bean id="something" class="com.site.namespace.package.MockA" autowire="byName" />

  • 据我所知,您在应用程序单元测试配置中拥有相同的bean id。这意味着加载问题很可能与xml配置文件的加载顺序有关。如果在第一种情况下,应用程序config.xml最后加载,则A将覆盖单元测试config.xmlB定义,否则。因此,您需要确保以相同的顺序加载xml,以获得所需的效果

  • 您是否使用过Spring概要文件:这是进行此类测试的更好方法,使用单独的实例进行测试和生产环境。我会切换到配置文件,并将配置保存在一个位置


  • 可以在不修改XML文件的情况下注入mock。

    我不知道为什么必须指定一个全新的bean来测试A的逻辑?我们在工作中有一个类似的设置,我们只是直接测试bean。你能详细说明一下吗?我确实按正确的顺序加载了文件。我将查看个人资料。现在,我刚刚围绕这个问题重构了我的代码,但是谢谢你的帮助。无论如何我都会给你信用的。