2009-08-22 14 views

Antwort

2

Die generierten Accessoren in MSTest gibt es die privaten Teile von Klassen zu testen. Also schon da würde ich mich fragen ob wir Internals explizit testen sollten.

Ich glaube, Unit-Tests sollten nur das öffentliche Gesicht einer Klasse ausüben, daher wird das generierte Accessor-Zeug obsolet. Meiner Erfahrung nach ist das eine gute Sache, da ich finde, dass sie nicht trivial zu halten sind, besonders wenn sich die Dinge ändern (wie es normalerweise beim Refactoring der Fall ist).

0

Wenn Sie Accessoren verwenden, kann die zugrunde liegende Implementierung geändert werden, ohne die API zu ändern.

Indem Sie ein öffentliches Feld offenlegen, geben Sie die Interna frei, wie diese Daten gespeichert werden. Wenn Sie stattdessen eine öffentliche Eigenschaft verwenden, können Sie die Art und Weise, wie die Daten intern gespeichert werden, ändern und die öffentliche Schnittstelle nicht unterbrechen.

In C# 3.0 und später automatisch implementierte Eigenschaften machen Immobilien-Erklärung prägnante, wenn keine zusätzliche Logik in den Eigenschaftenaccessoren erforderlich ist. Sie auch Client-Code ermöglichen Objekte erstellen Wenn Sie eine Eigenschaft als gezeigt im folgende Beispiel erklären, die Compiler erstellt ein privates, anonymes Trägerfeld kann nur durch das Accessoren get und set Eigentum zugegriffen werden.

Auto-Implemented Properties

ZB:

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

In Roy Osherove's The Art of Unit Testing erwähnt er eine wirklich wichtige Sache über die Verbraucher Ihrer Klassen. Komponententests sind Konsumenten und nutzen die API. Wenn Sie die Sichtbarkeit Ihrer API ändern müssen, dann sollten Sie testen. Verwenden Sie keine Zugriffsmethoden, wenn Sie es vermeiden können.

In der Tat empfehle ich dieses Buch zu lesen :-)

Verwandte Themen