Junit测试具有抽象类对象的类

时间:2014-08-15 02:43:50

标签: java spring junit dependency-injection

我正在为一个具有另一个抽象类对象的类编写一个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定义。

1 个答案:

答案 0 :(得分:2)

如果要“实例化”抽象类,那么只有一个解决方案:使用子类。如果子类尚不存在,创建它

package mypackage;

public class MyClassA extends classA {
    // Implement all abstract methods here, even if it is just a dummy implementation
}

您的弹簧配置应为:

<bean id="classa" name="classa" class="mypackage.MyClassA"/>