2011-06-30 11 views
4

私は部分クラスと部分的なメソッドを生成するLinq to SQLを使用しています。その後、カスタマイズされたコードを別の部分クラスで手動で実装することによって、生成されたコードを拡張します。 L2Sのフックの1つに、プロパティが変更されたときに呼び出される部分的なメソッドを実装する機能があります。あなたが「MyPropで」という名前のプロパティを持っている場合たとえば、あなたはそうのような部分的なメソッドを実装することができます名前を変更した部分メソッドのテスト方法を教えてください。

' Given to you in the generator 
Partial Private Sub OnMyPropChanged() 
End Sub 

' Manually implemented in my custom class 
' I cannot specify that this is an implementation of a Partial, even though it is... 
Private Sub OnMyPropChanged() 
    Console.WriteLine("My prop changed... do something here") 
End Sub 

を私がいる問題は、「MyPropで」の名前で、今まで「MyNewPropName」に変更されました今ではジェネレータの部分がPartial Private Sub OnMyNewPropNameChanged()を作成しますが、部分メソッドの私のバージョンはまだ古い名前を持っています。効果的に、私は今、私のコードが実行時に壊れていることを意味しない、孤立したプライベートメソッドが呼び出されることがあります。このようなことをどうやってテストすればいいですか?私のバージョンOnMyPropChanged()は部分的なメソッドの実装であると指定する方法はありますか?その部分に対応する部分がなければコンパイル時に破損が発生します。生成されたコード?

答えて

2

に役立ちます。 このような星座を見つけるのに役立ちます。 (IIRCに関するエラーコードはCA1811です)

+0

FxCopのようなものを結びつけて私のためにチェックすることは考えていませんでした。それは動作します。ありがとう! – mattmc3

0

私の意見では、あなたができるとは思わない。

デザイナーでプロパティの名前を変更すると、自動生成されたコードが再現されています。

ビジネスロジックの実装を開始する前に、エンティティを設計することをお勧めします。実行されている部分実装をテストするビジュアルスタジオで単体テストを作成します。ビジュアルスタジオのユニットテストでは、コードカバレッジの統計情報も提供されます。

・ホープこれはあなたのコードがアクセスしていないかしか設定しないされているすべての内部(プライベート、freid、内部)のメンバーが含まれているときに警告/エラーになります静的anlysis(コード解析)を使用することにより

+0

あなたは「ビジネスロジックの実装を開始する前にエンティティを設計するのが最善の方法ですが、完璧な設計をしていること、それほど現実的ではない。また、単体テストについても言及しますが、プライベートな部分メソッドが呼び出されるかどうかをテストする方法について詳しく説明できますか? – mattmc3

+0

これらのメソッドは、状態を変更したり、ビジネスオブジェクトを何らかの方法でカスタマイズできるように設計されています。したがって、このメソッドの実装では、そのメソッドを呼び出すことの効果または結果を知ることができます。ユニットテストでは、どのようなアクションが拡張性/部分的メソッドをトリガーするのかを知ることができ、メソッドにどのような結果が生じるかを知ることができます。結果のテスト – jaywayco

関連する問題