Ja, erstens: Vergessen Sie Unit-Tests als Grund, Ihren Code um die Unit-Test-Tools herum zu entwerfen. Es ist niemals eine gute Idee, Ihr Code-Design so zu biegen, dass es einer künstlichen Einschränkung entspricht. Wenn Ihre Tools Sie dazu zwingen, sollten Sie sich bessere Tools besorgen (z. B. Microsoft Fakes / Moles, mit denen Sie viel mehr Optionen zum Erstellen von Scheinobjekten haben).
Würden Sie Ihre Klassen beispielsweise in nur öffentliche Methoden aufteilen, nur weil die Testtools nicht mit privaten Methoden funktionieren? (Ich weiß, dass die vorherrschende Weisheit darin besteht, so zu tun, als müssten Sie keine privaten Methoden testen, aber ich bin der Meinung, dass dies eine Reaktion auf die Schwierigkeit ist, dies mit aktuellen Tools zu tun, und keine echte Reaktion darauf, keine privaten Methoden testen zu müssen.)
Alles in allem kommt es darauf an, was für ein TDDer Sie sind - der "Spötter", wie Fowler ihn beschreibt , muss den Code an die verwendeten Tools anpassen , während die "klassischen" Tester Tests erstellen, die stärker in die Natur integriert sind (dh testen Sie die Klasse als Einheit, nicht jede Methode), sodass weniger Schnittstellen erforderlich sind, insbesondere wenn Sie Tools verwenden, mit denen sich konkrete Klassen verspotten lassen.