0

私は、ストアド プロシージャ、ビジネス オブジェクト、および DTO: を使用するレガシー システムで作業しています。多くの場合、ビジネス オブジェクトと DTO:s は同じプロパティを持ちます。DTO を返すサービス層でメソッドを呼び出すと、多くの変換が行われます。ストアド プロシージャ -> データセット -> ビジネス オブジェクト -> DTO。新しいプロパティが追加された場合、開発者がそれをあるレイヤー/オブジェクトから別のレイヤー/オブジェクトに移動するコードを追加するのを忘れることがあります。

システムの一部では、同じ名前のプロパティを自動的に投影する AutoMapper を使用してこれを解決しました。

私の質問は、他の部分についてです。オブジェクト内のすべてのプロパティに値が設定/付与されているかどうかを確認する単体テストを作成できますか? そうすれば、サービス層を呼び出す統合テストを作成でき、テストに合格するにはすべての変換が成功する必要があります。

解決策には反射が含まれると思います。

4

3 に答える 3

0

おそらく、BO/DTO を変更してINotifyPropertyChangedインターフェイスを実装することができます。このようにして、ユニット/統合テストにどのプロパティが変更されたかを伝えるためにリスナーをセットアップできます。

リスナーでは、変更されたすべてのプロパティのリストを保存し、リフレクションを使用して、リストにない追加のプロパティをチェックインできます。

于 2009-07-08T09:43:35.950 に答える
0

はい、反射が進むべき道です。

いくつかのモック オブジェクトに対して単体テストを実行することをお勧めします。これにより、テストする既知の値が得られます。

于 2009-07-08T07:33:39.003 に答える
0

リフレクションは 1 つの方法ですが、注意点があります。プロパティをデフォルト値に設定すると、設定されたという事実を理解できなくなります。

実際のプロキシで傍受し、すべてのプロパティの変更をリッスンできます。使用できる基本インターセプターについては、こちらのコードを参照してください。注インターセプターは、オブジェクトが MarshalByRefObject である必要があることを意味しますが、これは必要なものではない可能性があります。したがって、もう 1 つのオプションは、テスト シナリオでオブジェクトを返す前に、ファクトリにオブジェクトをラップするように指示することです。制御ライブラリのninjectまたは他の多くの反転により、実行できるようになります。

于 2009-07-08T07:34:27.147 に答える