Ich möchte meinen Mitarbeitern das Konzept der Komponententests (und Tests im Allgemeinen) vorstellen. Im Moment gibt es überhaupt keine Tests und die Dinge werden getestet, indem die Aufgaben über die Benutzeroberfläche ausgeführt werden, um das gewünschte Ergebnis zu sehen. Wie Sie sich vielleicht vorstellen können, ist der Code sehr eng an die genaue Implementierung gekoppelt. Dies kann sogar dazu führen, dass Code, der in einer Klasse enthalten ist und systemweit wiederverwendet wird, methodenübergreifend kopiert und eingefügt wird.
Aufgrund geänderter Anforderungen wurde ich gebeten, ein Modul zu ändern, das ich zuvor geschrieben habe, und das ziemlich locker gekoppelt ist (nicht so viel, wie ich möchte, aber so gut ich kann, ohne viele andere Konzepte einführen zu müssen). Ich habe beschlossen, meinem überarbeiteten Code eine Reihe von Komponententests beizufügen, um zu "beweisen", dass er wie erwartet funktioniert, und um zu demonstrieren, wie das Testen funktioniert. Ich verfolge kein echtes TDD, da ein Teil des Codes bereits geschrieben ist, aber ich hoffe, dass ich einige TDD-Konzepte für den neuen Code befolgen kann, den ich erstellen muss.
Jetzt bin ich mir sicher, dass ich gefragt werde, warum ich mehr als ein oder zwei Tage brauche, um den Code zu schreiben, da Teile von dem, mit dem ich interagieren werde, bereits im System vorhanden sind (wenn auch ohne Tests und sehr eng gekoppelt), und wenn ich den Code einchecke, werde ich gefragt, was dieses "Tests" -Projekt ist. Ich kann die Grundlagen des Testens erklären, aber ich kann die tatsächlichen Vorteile nicht so erklären, wie es die anderen verstehen würden (weil sie glauben, dass Sie die App zum Testen selbst ausführen müssen, da häufig die tatsächliche Benutzeroberfläche für die Bestimmung der Funktionsfähigkeit der Funktion von Bedeutung ist " oder nicht). Sie verstehen die Idee der losen Kopplung nicht (deutlich erkennbar an der Tatsache, dass nichts lose gekoppelt ist; es gibt nicht einmal Schnittstellen außerhalb des von mir geschriebenen Codes). Der Versuch, das als Vorteil zu nutzen, würde mir wahrscheinlich ein "Huh?" Ich kann nicht so locker sein, wie ich es gerne hätte, ohne mehrere vorhandene Module überarbeiten zu müssen und wahrscheinlich eine Art IoC-Container einzuführen, was als Zeitverschwendung und nicht als "Programmieren" angesehen würde.
Hat jemand Vorschläge, wie ich auf diesen Code verweisen und "Wir sollten mit der Erstellung von Komponententests beginnen" sagen kann, ohne dass dies als herablassend eingestuft wird (z. B. "Wenn Sie Tests schreiben, müssen Sie guten Code schreiben")? außer meins ist schlecht ) oder ohne es wie eine Zeitverschwendung erscheinen zu lassen, die keinen wirklichen Wert hinzufügt?