[解決済み] 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の一部としてそれらのメソッドをテストすることになるでしょう。
しかし、それに対する私の反論は、ユニットテストのポイントは、開発者が変更を加え、テストを実行し、その結果を分析することを可能にすることです。このような変更には、抽象クラスのメソッドをオーバーライドすることも含まれます。
protected
と
public
といった、根本的な動作の変更をもたらす可能性があります。これらの変更の性質によっては、予期しない、おそらくは否定的な方法で、アプリケーションの実行方法に影響を与える可能性があります。もしあなたが良いユニットテストスイートを持っているならば、これらのタイプの変更から生じる問題は、開発時に明らかになるはずです。
関連
-
SLF4J: クラス・パスに複数のSLF4Jバインディングが含まれています。
-
ajax コミット リソースの読み込みに失敗しました: サーバーはステータス 400 で応答しました ()
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] インターフェースと抽象クラスの違いは何ですか?
-
[解決済み] インターフェースと抽象クラス(一般的なOO)
-
[解決済み] Mockitoでvoidメソッドをモックする方法
-
[解決済み] 抽象クラスをユニットテストする方法:スタブで拡張する?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
XMLファイル操作時のjava.util.NoSuchElementExceptionを解決する方法。
-
Javaクラスが "Error occurred during initialization of boot layer "というエラーで実行される。
-
ApplicationContextの起動エラーです。条件レポートを表示するには、アプリケーションを'de'で再実行します。
-
Uncaught ReferenceError: は定義されていません。
-
SpringBoot 起動エラー java.nio.charset.MalformedInputException: 入力長 = 2 解決
-
配列定数は初期化子でのみ使用可能です。
-
Java基礎編 - オブジェクト指向
-
Java:未解決コンパイル問題の解決方法
-
[解決済み] 抽象クラスをユニットテストする方法:スタブで拡張する?
-
[解決済み】Mockitoを使用して抽象クラスをテストする