9

データベースからロードするかなり複雑なオブジェクトがあるシナリオがあります。

そのオブジェクトには、いくつかのネストされたオブジェクトがあります。デバッグ中に、単体テストで使用したいこのオブジェクトのインスタンスを見つけました。現在、このオブジェクトを手動で作成する必要があります。かなり複雑なので、少し時間がかかります。

この変数をテキスト ウィンドウ (またはクリップボード) に出力するようにウォッチ ウィンドウに指示する方法があれば、ユニット テストの時間を節約できます。

必要な情報はすべてウォッチ ウィンドウにあるようです。

using ステートメントなどを作成することは期待していません。クラス情報を使用してステートメントを作成するだけですnew(オブジェクトと同じ数のレベルをネストします)。

そこにそのようなツールはありますか?(そうでない場合、私は自分の財産を作る方法を見つけただけですか?)

4

1 に答える 1

2

私が知っているそのようなツールはありません...これを行うのは非常に複雑です。理由は次のとおりです。

  • オブジェクトには循環参照がある可能性があるため、移動できる深さに制限はありません。
  • シングルトンオブジェクトへの参照がある可能性があります
  • コンストラクターでパラメーターを受け取るオブジェクトへの参照がある可能性がありますが、オブジェクトの構築方法をどのように知ることができますか?
  • または、パブリックコンストラクタを持たず、代わりにファクトリによってビルドされたオブジェクトへの参照
  • またはCOMオブジェクトへの参照
  • または、実行中にのみ意味のあるオブジェクトへの参照:ファイルストリームなど

簡単な解決策の1つは、オブジェクトをシリアル化可能にし(xml、jsonなど)、シリアル化し、シリアル化された文字列を単体テストにコピーしてから、単体テストで逆シリアル化します。

それほど簡単な解決策ではありません:ビジュアライザーオブジェクトソースを使用してデバッガービジュアライザーを実装します: デバッガービジュアライザーと「タイプはシリアル化可能としてマークされていません」

このようにして、ウィンドウを作成し、シリアル化されたオブジェクトを表示できます...おそらく、すべてのオブジェクトプロパティ、子オブジェクトなどを読み取るためにリフレクションを使用する必要があります。

于 2012-11-28T17:26:18.217 に答える