0

主にorg.apache.poi.hssf.usermodelのクラス(HSSFWorkbookHSSFFontHSSFCellStyleなど)と相互作用するメソッドでJUnitテストを作成しています。

このメソッドは最終的にオブジェクトを構築して返しHSSFWorkbookます。

オブジェクトを構築するために、およびHSSFWorkbookのようなメソッドが呼び出されます。workbook.createFont()workbook.createCellStyle()

setup私は現在、ユニットテストのクラスでこのようなオブジェクトをモックアウトしています

workbook = mock(HSSFWorkbook.class);
font = mock(HSSFFont.class);
cellStyle = mock(HSSFCellStyle.class);

次に、私のテストメソッドでは、NPEを回避するために次を呼び出します

when(workbook.createFont()).thenReturn(font);
when(workbook.createCellStyle()).thenReturn(cellStyle);

NPEを回避するために、さらに多くのことを実行する必要があることに気づきました。これらの「when ...thenReturn」ステートメントをすべて記述しないようにする方法があるかどうか疑問に思っています。

4

1 に答える 1

3

モックのルールの1つは、次のとおりです。所有していないタイプをモックしないでください。別のルールは、モックに対するスタブ呼び出しであり、別のモックを返さないようにする必要があります。

理由はあなたの前にあります:)。

クラスがの作成のみを扱っている場合HSSFWorkbookは、テストを統合テストとして扱い、実際のライブラリを使用します。クラスが他のことも行う場合は、他のすべてのものを他のクラスに移動します(これは単一責任の原則に従うことです)

于 2012-10-17T21:14:03.353 に答える