我需要测试一个扩展 Car 的类 SportCar。问题是当我创建被测对象时
SportCar car = new SportCar();
它还将调用父类的构造函数,例如 Car()。那些构造函数做了很多事情,有很多环境依赖,需要很多我没有的配置文件,所以我想创建一个 SportCar 的实例而不调用继承的构造函数。
我知道的唯一解决方案是为 Car 创建一个 Mockup,在其中我覆盖构造函数 ($init) 和静态块 ($clinit)。但是现在我的问题是,如果我的层次结构中有很多类(SportCar 扩展 Car 扩展 A 扩展 B 扩展 C ...)并且我想避免所有构造函数,会发生什么?我应该为所有以前的课程创建模拟吗?
class A extends B{
public A(){
// Plenty of things to avoid during tests
}
}
class Car extends A{
public Car(){
// Plenty of things to avoid during tests
}
}
class SportCar extends Car(){
}