2009-08-22 15 views

答えて

2

MSTestを中に生成されたアクセサは、クラスのプライベートな部分をテストすることがあります。そこで既に私は内部的に明示的にテストしなければならないと私は自問しています。

私は単体テストはクラスの公開面のみを実行する必要があると信じています。したがって、生成されたアクセサの要素は廃止されます。私の経験では、物事が変わったとき(特に彼らがリファクタリングをするときにそうするように)、特に維持することが些細でないことが分かっているので、それは良いことです。

0

アクセサーを使用する場合は、APIを変更せずに基本実装を変更することができます。

パブリックフィールドを公開すると、そのデータの格納方法が公開されます。代わりにパブリックプロパティを使用すると、データが内部的に格納される方法を変更し、パブリックインターフェイスを破ることなく、より柔軟に変更できます。 C#3.0以降で

追加ロジック がプロパティアクセサに必要とされない場合、自動実装 プロパティは、プロパティ宣言 がより簡潔します。あなたは、次の例に示す としてプロパティを宣言すると 彼らはまた、 オブジェクトを作成するために、クライアントコードを有効にする、 コンパイラは、プライベート、匿名 バッキングフィールドを作成し、専用のプロパティのget経由 にアクセスして アクセサを設定することができます。

Auto-Implemented Properties

例:

// Auto-Impl Properties for trivial get and set 
public string Name { get; set; } 
public int CustomerID { get; set; } 
1

Roy Osherove's The Art of Unit Testingには、彼はあなたのクラスの消費者にとって本当に重要なことを言及しています。単体テストはコンシューマであり、APIを使用します。あなたの可視性を変更する必要がある場合は、次にテストする必要があります。アクセサを使用しないでください。

実際に私はこの本を読むことをお勧めします:-)

関連する問題