Ich bin nicht einverstanden mit der Philosophie, dass man nur an der Prüfung der externen Schnittstelle interessiert sein sollte. Das ist ein bisschen so, als würde man sagen, dass eine Autowerkstatt nur testen sollte, ob sich die Räder drehen. Ja, letztendlich bin ich an dem externen Verhalten interessiert, aber ich möchte, dass meine eigenen, privaten, internen Tests etwas spezifischer und zielgerichteter sind. Ja, wenn ich ein Refactoring durchführe, muss ich vielleicht einige der Tests ändern, aber wenn es sich nicht um ein massives Refactoring handelt, muss ich nur einige wenige ändern, und die Tatsache, dass die anderen (unveränderten) internen Tests immer noch funktionieren, ist ein guter Indikator dafür, dass das Refactoring erfolgreich war.
Man kann versuchen, alle internen Fälle nur über die öffentliche Schnittstelle abzudecken, und theoretisch ist es möglich, jede interne Methode (oder zumindest jede, die von Bedeutung ist) vollständig über die öffentliche Schnittstelle zu testen, aber dazu muss man sich möglicherweise auf den Kopf stellen, und die Verbindung zwischen den Testfällen, die über die öffentliche Schnittstelle ausgeführt werden, und dem internen Teil der Lösung, den sie testen sollen, kann schwierig oder unmöglich zu erkennen sein. Gezielte Einzeltests, die garantieren, dass die interne Maschinerie ordnungsgemäß funktioniert, sind die geringfügigen Teständerungen, die mit dem Refactoring einhergehen, auf jeden Fall wert - das ist zumindest meine Erfahrung. Wenn Sie bei jedem Refactoring große Änderungen an Ihren Tests vornehmen müssen, dann macht das vielleicht keinen Sinn, aber in diesem Fall sollten Sie vielleicht Ihr Design komplett überdenken. Ein gutes Design sollte so flexibel sein, dass es die meisten Änderungen ohne große Umgestaltungen zulässt.
3 Stimmen
Vielleicht übersehe ich etwas, oder vielleicht ist diese Frage einfach nur, nun ja...
pre-historic
in Bezug auf Internet Jahre, aber Unit-Tests von privaten Methoden ist jetzt sowohl einfach und unkompliziert, mit Visual Studio produziert die notwendigen Accessor-Klassen, wenn nötig und Pre-Füllung der Tests Logik mit Schnipseln verdammt nah an das, was man für einfache funktionale Tests wünschen kann. Siehe z.B.. msdn.microsoft.com/de-us/library/ms184807%28VS.90%29.aspx5 Stimmen
Dies scheint fast ein Duplikat zu sein von stackoverflow.com/questions/34571/ .
0 Stimmen
Der Fragesteller verwendet möglicherweise nicht Visual Studio
6 Stimmen
Testen Sie keine internen Einheiten: blog.ploeh.dk/2015/09/22/einheitsprüfung-internes
1 Stimmen
Mögliches Duplikat von Wie teste ich eine Klasse, die private Methoden, Felder oder innere Klassen hat?
0 Stimmen
Die privaten Accessors sind in Visual Studio ab 2012 veraltet.
0 Stimmen
Die Frage ist nicht, ob er eine private Methode testen SOLLTE, sondern WIE er eine private Methode testen kann. Ich streite mich nicht über die Vorzüge der einen oder anderen Methode. Es könnte einen legitimen Grund dafür geben, dass er dies tun will, wie jeder andere auch, der auf der Suche nach einer Lösung hier landet.
0 Stimmen
Ähnlicher Beitrag - Unit-Tests für private Methoden in C#