Testen von nicht öffentlichen Methoden
Geschrieben von Christina Hirth in How-To, Unit TestingWir fragen uns seit langem, wie man internal
Methoden testen kann, da eins klar ist, die Kapselung darf nicht wegen der Testfähigkeit verletzt werden.
Letzte Woche hatte zum Glück auch jemand anderer dieses Problem und er hat gleich bei CCD-GoogleGroup nachgefragt. Und so haben wir auch erfahren, wie die Lösung lautet:
für “internal”-Elemente gibt es auch die Option mit [assembly:
InternalsVisibleTo("TestAssembly")] zu arbeiten. Alternativ kannst du die zu
testenden Klassen auch per “Add existing item” und dann “Add as link” (siehe
kleines Dreieck neben dem “Add”-Button) zum Testprojekt hinzufügen.
(Danke Alex)
Danach war nur noch ein wenig Surfen nötig, um alles zu erfahren:
msdn sagt:
Specifies that types that are ordinarily visible only within the current assembly are visible to another assembly.
User comment:
It is not documented anywhere to my knowledge, but if you want to grant “InternalsVisibleTo” permission to more than one assembly, you need to understand the syntax.
To do this you should NOT insert multiples instances of:
[assembly: InternalsVisibleTo("FirstAssembly")]
Instead do this:
[assembly: InternalsVisibleTo("FirstAssembly"),
InternalsVisibleTo("SecondAssembly"),
InternalsVisibleTo("ThirdAssembly")]
The former syntax is legal but fails, because each instance simply redefines and replaces any earlier ones, the latter syntax works as required.
Das ist natürlich eine super Sache.
Sowohl internal Klassen, als auch internal Methoden werden für die gekennzeichnete assembly freigegeben.