我是使用JUnit进行Java测试的新手。我必须使用Java,我想使用单元测试。
我的问题是:我有一个抽象类与一些抽象方法。但是有一些方法不是抽象的。我如何用JUnit测试这个类?示例代码(非常简单):
abstract class Car {
public Car(int speed, int fuel) {
this.speed = speed;
this.fuel = fuel;
}
private int speed;
private int fuel;
abstract void drive();
public int getSpeed() {
return this.speed;
}
public int getFuel() {
return this.fuel;
}
}
我想测试getSpeed()
和getFuel()
功能。
这个问题类似的问题在这里,但它不使用JUnit。
在JUnit FAQ部分,我找到了这个链接,但我不明白作者想要用这个例子说什么。这段代码是什么意思?
public abstract Source getSource() ;
发布于 2018-03-27 13:44:55
如果你没有具体的类的实现,而且这些方法不是static
测试它们的重点?如果你有一个具体的类,那么你将测试这些方法作为具体类的公共API的一部分。
我知道你在想什么“我不想一遍又一遍地测试这些方法,这就是我创建抽象类的原因”,但我反驳说,单元测试的重点是允许开发人员进行更改,运行测试并分析结果。这些变化部分可能包括重写你的抽象类的方法,既protected
和public
,这可能导致根本性的行为变化。根据这些更改的性质,它可能会影响您的应用程序以意想不到的方式运行,可能是负面的。如果你有一个很好的单元测试套件,这些类型变化引起的问题应该在开发时显而易见。
https://stackoverflow.com/questions/-100003712
复制相似问题