我是第一次使用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()运行。
getSpeed()
getFuel()
在“JUnit常见问题解答”部分中,我找到了此链接,但我不理解作者想在此示例中说些什么。这行代码是什么意思?
public abstract Source getSource() ;
如果您没有该类的具体实现,并且方法不是static测试它们的重点?如果您有具体的类,那么您将作为具体类的公共API的一部分测试这些方法。
static
我知道您在想什么:“我不想一遍又一遍地测试这些方法,这就是创建抽象类的原因”,但是我的反对论点是,单元测试的目的是允许开发人员进行更改,运行测试,并分析结果。这些更改的一部分可能包括覆盖抽象类的方法(protected和)public,这可能会导致基本的行为更改。根据这些更改的性质,它可能会影响应用程序以意外方式(可能是负面方式)运行的方式。如果您有一个好的单元测试套件,则在开发时,由这些类型引起的问题应该很明显。
protected
public