Wie schreibt man unit-Tests für private Methoden in c# verwenden moq-framework?
Möchte ich schreiben unit-Tests für private Methoden in C# verwenden moq-framework, ich habe die Suche im StackOverFlow und Google, aber ich finde nicht das erwartete Ergebnis. Bitte helfen Sie mir, wenn Sie können.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht, zumindest nicht mit Moq.
Aber noch wichtiger ist, Sie sollte nicht.
First off, Sie testen nicht Methoden testen Sie Verhaltensweisen. Zweitens, um zu testen, Verhaltensweisen, Sie trainieren ein Typ ist öffentlichen API und überprüfen Sie die Ergebnisse der übung.
Private Methoden Implementierungsdetails. Sie wollen nicht, um zu überprüfen wie Dinge, die Sie überprüfen möchten, dass die Dinge tun erledigt.
Sollten Sie vielleicht nicht (siehe andere Antworten, warum), aber Sie kann dies tun, indem Sie Microsoft Visual Studio Test-Tools. Ein Vereinfachtes Beispiel ist unten gegeben.
Gegeben folgende Klasse, welche Sie testen möchten:
Können Sie den folgenden code zum testen der privaten
Duplicate
Methode:Einfach, Sie nicht. Private Methoden sind nicht sichtbar für andere Klassen.
Gibt es eine Reihe von Möglichkeiten, um dieses:
Für öffentliche Methoden (option drei) ist es möglich, teilweise mock-Klasse, wo Sie können, ersetzen Sie die Methode. In Moq können Sie das in etwa so machen:
Gibt es mehr details hier.
In der AssemblyInfo.cs von Ihrem Projekt hinzufügen
dann machen Sie die Methode der internen anstelle der privaten.
Es hat den Vorteil der Vermeidung öffentlich machen.
Aber wie schon von dcastro, einige Leute stark nicht einverstanden mit dieser Art und Weise testen.