Frage

, wie Unit-Tests auf interne Klassen schreiben ???

War es hilfreich?

Lösung

Sie schreiben Tests, die das Verhalten der Top-Level-Klasse externen Schnittstelle angeben. Ob diese Klasse interne Klassen verwendet, um dieses Verhalten zu implementieren oder nicht, ist eine Implementierung Detail der Klasse, und die Tests müssen nichts davon wissen.

Wenn die interne Klasse kann nicht ausreichend durch die Top-Level-Klasse-Schnittstelle getestet werden, dann ist es in der Regel am besten, die interne Klasse zu bewegen und testen Sie es direkt als neue Top-Level-Klasse. Wanting interne Klassen zu testen, wird ein Code Geruch, dass die interne Klasse signifikant genug sein könnte, eine Top-Level-Klasse zu sein.

Andere Tipps

Nicht, dass ich es empfehlen würde, aber Sie können auch die InternalsVisibleToAttribute .

Bei Tests mit MS Visual Studio für Unit Sie haben einfach erstellen privat Accessor . Intern arbeitet es mit Reflexionen, denke ich. Werfen Sie einen Blick auf den generierten Code.

Sie es nicht direkt testen. Es wird durch die Klasse getestet werden, in dem sie definiert ist.

Und wenn Sie TDD anwenden, da diese Frage Tags impliziert zur Zeit, was ist der Test, den Sie gerade diesen Anruf für eine innere Klasse schreiben? Ich meine, kann es keine Standardklasse sein, privat von der Klasse im Besitz der Sie arbeiten?

Wir haben eine Hilfsklasse verwendet, die Reflexion verwendet Methoden auf interne Klassen zu laden und rufen. Es ist auch möglich, die Zugänglichkeit bei der Kompilierung mit dem Symbol DEBUG zB

zu ändern
#if DEBUG
public
#else
internal
#endif
    class MyInternalClass
{
    ...
}

Allerdings Antwort Esko Luontola das ist richtiger, da es die Funktionalität oder Geschäftsanforderungen, die am wichtigsten sind. Es ist leicht, auf Code-Coverage zu konzentriert zu bekommen, anstatt die wichtigen Risikobereiche zu testen.

Sehen Sie die detaillierten Erklärungen von http://msdn.microsoft.com/en -US / library / bb385974.aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top