我是使用 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() ;
原文由 vasco 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您没有该类的具体实现并且方法不是
static
测试它们有什么意义?如果您有一个具体类,那么您将把这些方法作为具体类的公共 API 的一部分进行测试。我知道你在想什么“我不想一遍又一遍地测试这些方法,这就是我创建抽象类的原因”,但我的反驳论点是单元测试的目的是允许开发人员进行更改,运行测试,并分析结果。这些更改的一部分可能包括覆盖抽象类的方法,包括
protected
和public
,这可能会导致基本的行为变化。根据这些更改的性质,它可能会影响您的应用程序以意想不到的、可能是负面的方式运行。如果你有一个很好的单元测试套件,这些类型变化引起的问题在开发时应该是显而易见的。