Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Antwort zu Frage: TES-1: Wie sollten private Methoden einer Klasse getestet werden? #12

Open
MK-NEUKO opened this issue Dec 10, 2020 · 0 comments
Labels
answer Antwort auf eine Frage

Comments

@MK-NEUKO
Copy link

@suchja Hier meine Antwort zur Frage: TES-1: Wie sollten private Methoden einer Klasse getestet werden?

Da ich mich gerade mit dem Testen beschäftige, versuche ich es mal mit dieser Frage.
Grundsätzlich würde ich sagen, kommt man an die Stelle, eine private Methode testen zu müssen, dann stimmt etwas mit dem Designe nicht. Hätte ich eine öffentliche Methode, in der eine private Methode aufgerufen wird und deren Code nur teilweise, oder gar nicht ausgeführt wird. Stellt sich mir die Frage. Wozu dient dieser Code wenn er nicht aufgerufen wird und warum soll ich diesen testen und nicht löschen? Auch der Compiler würde sich melden, wenn Code geschrieben wird, der nie erreicht wird. Clean Code ist hier das Richtige, das ist meine Meinung dazu. Es gibt da gewisse Prinzipien an denen man sich Orientieren kann.
Unter dem Stichwort Clean Code wird man in jedem Fall fündig werden. Separation of Concerns (SoC) und Single Level of Abstraction (SLA) um nur zwei zu nennen.
Aber zurück zu den Tests, ich habe versucht mit der aktuellen Version von MSTest eine Private Methode zu testen.
Es hat nicht funktioniert, oder ich habe nicht die richtige Funktionalität dafür gefunden.
Denn in einem aktuellen und bekannten Fachbuch zu C#, in dem Kapitel UnitTest, heißt es:

[TestMethod]
public void Test_IsPositive()
{  
    PrivateObject obj = new PrivateObject(typeof(Calculator));  
    bool actual = (bool)obj.Invoke("IsPositive", 5);  
    Assert.IsTrue(actual);
}

Dieses Beispiel bezieht sich auf eine Version des .NET Framework.
Wie das bei anderen Test-Frameworks aussieht, (xUnit, NUnit), weiß ich nicht, dazu fehlt mir noch einiges an Wissen und Erfahrung.
Abschließend kann ich nur sagen, man sollte seinen Code so gestallten, dass man nicht in die Situation kommt, private Methoden testen zu müssen.

@MK-NEUKO MK-NEUKO added the answer Antwort auf eine Frage label Dec 10, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
answer Antwort auf eine Frage
Projects
None yet
Development

No branches or pull requests

1 participant