我必须测试实现其中一个接口的抽象类之一。抽象类有一个带参数的构造函数。我使用 Mockito 作为测试框架。那么,如果我需要调用抽象类中的方法,最好的方法应该是什么?
如果我尝试对抽象类进行子类化,它会要求实现参数构造函数并且不允许编写无参数构造函数。此外,如果我尝试在没有无参数构造函数的情况下模拟一个类,并将 sysouts 放入方法中,通常我看不到它们被调用(被模拟的类是否需要强制的无参数构造函数?)尽管没有 junit 失败。
请帮忙。提前致谢。
测试抽象类的一种方法是实现它的 concreate 子类,仅用于测试。
如果抽象类只有一个带参数的构造器,你可以做不同的事情:
您选择哪种方式取决于您的测试用例和抽象类的实现。- 当然你可以混合方式。
例子:
abstract class A{
A(Object o) {
}
}
class TheNullWay extends A {
TheNullWay() {
super(null);
}
}
class TheMockedWay extends A {
TheMockedWay(Object o){
super(o);
}
}
new TheMockedWay(createMockedObject());
顺便说一句:测试使用抽象类的类是完全不同的事情。