2

インターフェイスの 1 つを実装している抽象クラスの 1 つをテストする必要があります。抽象クラスには、引数を持つコンストラクターがあります。テスト フレームワークとして Mockito を使用しています。では、抽象クラスのメソッドを呼び出す必要がある場合、最適なメソッドは何でしょうか?

抽象クラスをサブクラス化しようとすると、引数コンストラクターを実装するように求められ、引数なしのコンストラクターの記述が許可されません。また、引数のないコンストラクターなしでクラスをモックしようとして、sysouts をメソッドに配置すると、通常、それらが呼び出されているのを確認できません (モックされたクラスには、必須の引数なしのコンストラクターが必要ですか?)。

助けてください。前もって感謝します。

4

1 に答える 1

2

抽象クラスをテストする 1 つの方法は、その concreate サブクラスをテスト用に実装することです。

抽象クラスに引数を持つコンストラクターしかない場合は、さまざまなことを行うことができます。

  • 引数に null を渡す
  • モック化されたオブジェクトを引数に渡す
  • 具体的なオブジェクトを引数に渡す

どの方法を選択するかは、テスト ケースと抽象クラスの実装によって異なります。- もちろん、方法を混在させることもできます。

例:

abstract class A{
  A(Object o) {
  }
}

class TheNullWay extends A {
  TheNullWay() {
    super(null);
  }
}

class TheMockedWay extends A {
  TheMockedWay(Object o){
    super(o);
  }
}

new TheMockedWay(createMockedObject());

ところで: 抽象クラスを使用するクラスをテストするのはまったく別のことです。

于 2010-11-24T07:03:41.353 に答える