The Blog

Test Pins

Schreibt man Tests, steht man immer wieder vor dem Problem, dass Felder und Funktionen ausschließlich für Tests öffentlich gemacht werden wollen. In folgendem Diagramm hat der Typ „AktualisiereEinträge“ nur eine öffentliche Funktion „Run()“, an die als Parameter ein Veränderungsmodell übergeben wird. Mehr Funktionalität wird vom Client nicht benötigt:

Bei der Entwicklung kann sich das Bedürfnis ergeben, die Korrektheit der Funktionen SqlAlteDatensaetze() und SqlNeueDatensaetze() zu testen. Im .NET Umfeld ist es ein üblicher Weg Zugriff auf die Methoden zu erhalten,  die Sichtbarkeit der beiden von „private „ auf  „internal“ zu wechseln und in der AssemblyInfo.cs das InternalVisibleTo Attribute zu setzen ([assembly: InternalsVisibleTo(„testAssembly“)]).

Test Pins als Alternative

Eine alternative zur Anpassung der Sichtbarkeit ist das Verwenden von expliziten TestPins. Statt eine Methode ausschließlich für Testcode öffentlich zu machen, wird eine weitere Methode hinzugefügt, die per Namenskonvention anzeigt, dass die Methode ausschließlich für Test genutzt werden soll:

Im Diagramm wurde der Typ „AktualisiereEinträge“ um die Methoden TpSqlNeueDatensaetze() und  TpSqlAlteDatensaetze() erweitert. Dieser Konvention folgend, würden also alle weiteren Testmethoden das Praefix „TP“ erhalten, wobei TP für TestPin steht. So wird klar der Zweck angezeigt. TestsPins könnten auch testvereinfachende Funktionalität besitzen, also Beispielsweise Daten vorbereiten oder schon einfache Assertions durchführen.

Bei der Idee handelt es sich ausschließlich um den Einsatz einer Konvention, Anpassung von Technologie ist nicht notwendig. Denkbar wären auch „Pins“ für tracing, logging und debugging.

Statt von TestPin, der eher an die Elektrotechnik oder Elektronik erinnert, liesse sich auch von TestPlug sprechen.

Tags: ,

3 Awesome Comments So Far

Don't be a stranger, join the discussion by leaving your own comment