一尘不染

如何使用JUnit在Java中测试抽象类?

java

我是第一次使用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常见问题解答”部分中,我找到了此链接,但我不理解作者想在此示例中说些什么。这行代码是什么意思?

public abstract Source getSource() ;

阅读 561

收藏
2020-09-08

共1个答案

一尘不染

如果您没有该类的具体实现,并且方法不是static测试它们的重点?如果您有具体的类,那么您将作为具体类的公共API的一部分测试这些方法。

我知道您在想什么:“我不想一遍又一遍地测试这些方法,这就是创建抽象类的原因”,但是我的反对论点是,单元测试的目的是允许开发人员进行更改,运行测试,并分析结果。这些更改的一部分可能包括覆盖抽象类的方法(protected和)public,这可能会导致基本的行为更改。根据这些更改的性质,它可能会影响应用程序以意外方式(可能是负面方式)运行的方式。如果您有一个好的单元测试套件,则在开发时,由这些类型引起的问题应该很明显。

2020-09-08