私は現在のプロジェクトでTDDを勉強して実験しています。 テストで多くのアサーションを複製する必要があることに気付きました。ここ 状況です:私は2つのコンストラクタ最初のものでOrderクラスを持っている デフォルトで、 もう一つは、私は割り当てがうまくユニットテストで重複がアサートされる
Assert.IsTrue(o.CustomerId == 5 && o.TypeId == 3 && amount == 500)
に働いていることを確認しています3つのparams OrderTestsクラスで
Order(int customerId, int typeId, decimal amount)
を持っています
オーダーの作成は複雑なプロセスなので、オーダーサービスクラスには以下のオーダー作成メソッドがあります。
Order CreateOrder(int cusotmerId, int typeId, int amount, moreParams...)
OrderServiceTestsクラスは、このメソッドのテストを持って、私は注文がCreateOrderサービスで正しく作成されていることを確認するために、同じアサーションを使用する必要があります。
Assert.IsTrue(o.CustomerId == 5 && o.TypeId == 3 && amount == 500)
- それがテスト中に、このような重複を持ってしても大丈夫ですか?
- テストで同じアサーションを持つメソッドを抽出するのは意味がありますか?あるいは、そのようなメソッド抽出によってテストが判読不能になるのですか?
私が理解する限り、あなたはオブジェクトの作成をテストしようとしています。なぜあなたはそれをする必要がありますか?複雑なロジックはありますか? – Andrey
私が書いたように、それはオブジェクトグラフを作成する複雑なプロセスです – Danil
Orderは純粋な値のオブジェクト/データ構造ではないと仮定します(この場合、失敗/修正するのはあまりにも些細かもしれません):ヘルパーメソッド 'AreAttributesEqual expectedOrder、actualOrder、listOfAttributesToCompare) 'を使用してリフレクションを使用します。すべてのプロパティを常に比較したい場合は、さらに簡単です。 – Gishu