1. ホーム
  2. java

[解決済み] Javaで抽象クラスをJUnitでテストするには?

2023-03-25 20:39:38

質問

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() ;

どのように解決するのですか?

もし、そのクラスの具体的な実装がなく、メソッドが static でない場合、それをテストする意味は何でしょうか?もし具象クラスがあるなら、具象クラスの公開APIの一部としてそれらのメソッドをテストすることになるでしょう。

しかし、それに対する私の反論は、ユニットテストのポイントは、開発者が変更を加え、テストを実行し、その結果を分析することを可能にすることです。このような変更には、抽象クラスのメソッドをオーバーライドすることも含まれます。 protectedpublic といった、根本的な動作の変更をもたらす可能性があります。これらの変更の性質によっては、予期しない、おそらくは否定的な方法で、アプリケーションの実行方法に影響を与える可能性があります。もしあなたが良いユニットテストスイートを持っているならば、これらのタイプの変更から生じる問題は、開発時に明らかになるはずです。