Ich habe ein Projekt, ich versuche Unit-Tests und TDD-Praktiken mit zu lernen. Ich stelle fest, dass ich zu ziemlich verwirrenden Fällen komme, in denen ich lange Zeit Mocks für eine Utility-Klasse aufstelle, die praktisch überall verwendet wird.Ist es akzeptabel, eine "echte" Dienstprogrammklasse zu verwenden, anstatt in TDD zu spotten?
Von dem, was ich über Komponententests gelesen habe, wenn ich MyClass teste, sollte ich mich über andere Funktionen (wie von UtilityClass zur Verfügung gestellt) lustig machen. Ist es akzeptabel (unter der Annahme, dass UtilityClass selbst über umfangreiche Tests verfügt), nur die UtilityClass zu verwenden und keine Mocks für die verschiedenen Testfälle einzurichten?
Edit: Eines der Dinge, die ich mache viel Setup für. Ich modelliere eine Karte mit verschiedenen Objekten an verschiedenen Orten. Eine der gebräuchlichen Methoden in meiner Dienstprogrammklasse ist GetDistanceBetween. Ich teste Methoden, die Auswirkungen auf Dinge haben, abhängig von ihren individuellen Eigenschaften, also zum Beispiel einen Test, der alle Objekte innerhalb von 5 Einheiten eines Punktes auswählt und ein Alter über 3 mehrere Tests benötigt (alte Objekte in Reichweite, alte Objekte ignoriert) der Bereich, ignoriert junge Objekte in Reichweite, arbeitet korrekt mit Vielfachen von jedem Fall) und alle diese Tests müssen Setup der 'GetDistanceBetween' Methode. Multiplizieren Sie das mit jeder Methode, die GetDistanceBetween verwendet (fast jede) und die verschiedenen Ergebnisse, die die Methode unter verschiedenen Umständen zurückgeben sollte, und es wird viel Setup.
Ich kann sehen, wie ich dies weiter entwickeln, kann es mehr Dienstprogramm Klassenaufrufe, große Anzahl von Objekten und eine Menge von Setup auf diesen Schein-Dienstprogramm Klassen.
+1 für die Hervorhebung von "make tests simple" –