9

単体テストを作成するときは、サンプルデータを含むいくつかのオブジェクトが必要です。たとえば、Orderオブジェクトがあるとします。このようなコードを書く必要があります-

Order o = new Order();
o.setId(3);
o.setAmount(2830.9);

List<Item> items = new ArrayList<Item>();
Item i = new Item();
i.setId(3);
i.setCost(34);
items.add(i);

o.setItems(items);

実際のオブジェクトはより多くの属性とネストされたオブジェクトを持っている可能性が高いため、ここで見たものよりもはるかに苛立たしく冗長です。

そして、複数の注文が必要な場合...

テスト用のモックデータオブジェクトを作成するための最良の方法は何ですか?

頭のてっぺんから、Jsonからオブジェクトを逆シリアル化することを考えています。これを行うための標準的で効率的な方法はありますか?

4

4 に答える 4

15

通常、DTO にはフィールドのみが含まれ、モックアウトする必要があるロジックは含まれません。

DTO をそれ自体のモックとして使用します。DTO にモックアウトしたいロジックが含まれている場合は、そのロジックを DTO から移動します。

DTO を作成するには、テスト自体または外部ファイルのテキストからこれを行います。JSON を使用することもできますが、まだ使用していない場合は、XMLEncoder/XMLDecoder を使用します。きれいな XML ではありませんが、組み込まれているため、追加のライブラリは必要ありません。

可能であれば、アプリケーションのログから DTO を作成できる可能性があるため、現実的なシナリオを再現できます。

于 2012-09-17T07:35:24.257 に答える
4

別の方法として、属性のランダムな値を生成することもできます。

PODAMopenpojoなどのユーティリティが役に立ちます。

必要に応じて、2 つのアプローチを組み合わせてみます。たとえば、PODAM でオブジェクトを生成し、ランダムにできない値を手動で設定します。

于 2012-09-17T08:09:55.520 に答える
1

異なる値を持つ複数のオブジェクトについては、Peter Lawreys の提案に従いますが、常に同じ値を持つ単一の DTO については、常に同じ値を返すモックを作成します。

于 2012-09-17T08:11:01.073 に答える