2

私は次の方法でクラスコンストラクターを検証する方法を見つけようとしています(これは理論的な例であることに注意してください)

public MyClass extends ItemContainer {

   public MyClass(RoundItem a, SquareItem b) {
      addItem(a);
      addItem(b); 
   }
}

コンストラクターがaddItemをany(RoundItem.class)で1回、any(SquareItem.class)で1回呼び出したことを確認したいと思います。PowerMockまたはMockitoを使用して、このような方法でコンストラクターを検証するための良い方法を見つけることができないようです。何か案は?

4

4 に答える 4

2

まず第一に、コンストラクターにロジックを入れないように注意する必要があります。(それらをテストしないために。アイテムabクライアントコードによってコンテナに配置される場合があります(実際にモックフレームワークを使用してテストできますが、より簡単な方法があります)。

単体テストを正しく行うための十分な背景を得るために、MiskoHeveryのテストに関する一連の講義を確認することを検討してください。

于 2012-05-15T14:50:21.820 に答える
2

これをテストするために、モックフレームワークは実際には必要ありません。TestSpyオブジェクトを作成できます。

例えば ​​:

@Test
public void testMyClassConstruction() throws Exception {
  MyClass myClass = new MyClass() {
    public int size() {
      return items.size();
    }
  }

  assertEquals(2, myClass.size());
}
于 2012-05-15T15:18:02.557 に答える
0

Mockiteは純粋にモックの目的で使用されます。他のことをテストしたい場合は、JUnitを確認することをお勧めします。これは、Java用の最高のテストフレームワークの1つです。それ以外の場合は、コンストラクターでいつでもSystem.out.printを実行して、呼び出された回数を確認できます。

于 2012-05-15T14:52:35.987 に答える
0
new Verifications() {
           {        
            addItem(a); times=1;
            addItem(b); times=1;
            }
        };

このようにして、メソッドが呼び出されたかどうかをテストできます。これで、オブジェクト「a」と「b」をモックできます。

または、「withInsatceLike」を使用することもできます

元:

 addItem(withInsatceLike(a));

お役に立てれば

于 2014-08-17T20:03:04.307 に答える