我正在为一个类编写一个Junit测试用例,该类具有另一个抽象类的对象。
我试图在我的应用程序上下文中为两个类定义Bean,但是它提供了
Could not instantiate bean class: Is it an abstract class?; nested exception is java.lang.InstantiationException
这是情况。
我的抽象类:
public abstract class classA{
public returnType methodA{//method logic}
public returnType methodB{//method logic}
}
另一个使用抽象类对象的类
public class classB {
@Autowired
classA classa;
public returnType methodB{
variable c = classa.methodA();
variable d = somelogic(c);
return d
}
}
我的applicationContextTest是
<bean id="classa" name="classa" class="package.classA"/>
<bean id="classb" class="package.classB">
<property name="classa" ref="classa"></property>
</bean>
而且我还没有编写此类,所以我不知道为什么作者没有扩展抽象类,并且我不能在类定义中进行任何更改。
自动装配在应用程序中工作得非常好,并且我已在应用程序中启用了组件扫描来查找bean。但是对于测试应用程序上下文,我手动定义了bean定义。
如果要“实例化”抽象类,则只有一种解决方案:使用子类。如果子类尚不存在,请创建它:
package mypackage;
public class MyClassA extends classA {
// Implement all abstract methods here, even if it is just a dummy implementation
}
然后,您的spring配置应显示为:
<bean id="classa" name="classa" class="mypackage.MyClassA"/>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句