5

いくつかのシリアル化操作を実行するメソッドの単体テストを行っています。シリアル化ロジックをモックするつもりです。コードは次のとおりです。

ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(file)));

次のモックオブジェクトを作成しました。

@Mocked FileInputStream mockFIS;

@Mocked BufferedInputStream mockBIS;

@Mocked ObjectInputStream mockOIS;

NonStrictExpectations()上記のコンストラクター呼び出しを期待するブロックをセットアップしました。

これをどのように達成できるかについてのアイデアはありますか?

4

1 に答える 1

10

特定の相互作用のセットに対して、期待値の完全なセットを指定できます。JMockitを使用した動作ベースのテストから:

doSomething()メソッドの可能なテストでは、任意の回数の反復が成功した後、SomeCheckedExceptionがスローされる場合を実行できます。(何らかの理由で)これら2つのクラス間の相互作用に対する期待の完全なセットを記録したいと仮定すると、以下のテストを作成できます。

@Test
public void doSomethingHandlesSomeCheckedException() throws Exception
{
  new Expectations() {
     DependencyAbc abc;

     {
        new DependencyAbc(); // expect constructor

        abc.intReturningMethod(); result = 3;

        abc.stringReturningMethod();
        returns("str1", "str2");
        result = new SomeCheckedException();
     }
  };

  new UnitUnderTest().doSomething();
}
于 2011-11-09T12:42:12.843 に答える