Aus den gleichen Gründen, aus denen Sie versuchen, eine enge Kopplung zwischen Klassen in Ihrem Code zu vermeiden, sollten Sie auch eine unnötige Kopplung zwischen Tests und Code vermeiden.
Erstellung: Tests und Code können zu unterschiedlichen Zeiten von unterschiedlichen Personen geschrieben werden.
Kontrolle: Wenn Tests verwendet werden, um Anforderungen zu spezifizieren, möchten Sie sicher, dass sie unterschiedlichen Regeln unterliegen, die festlegen, wer sie wann ändern kann.
Wiederverwendbarkeit: Wenn Sie die Tests inline setzen, können Sie sie nicht mit einem anderen Codeteil verwenden.
Stellen Sie sich vor, Sie haben einen Teil des Codes, der die Aufgabe korrekt erledigt, aber in Bezug auf Leistung, Wartbarkeit und was auch immer zu wünschen übrig lässt. Sie beschließen, diesen Code durch neuen und verbesserten Code zu ersetzen. Mit denselben Tests können Sie überprüfen, ob der neue Code dieselben Ergebnisse wie der alte Code liefert.
Auswählbarkeit: Wenn Sie die Tests vom Code trennen, können Sie leichter auswählen, welche Tests Sie ausführen möchten.
Beispielsweise verfügen Sie möglicherweise über eine kleine Testsuite, die sich nur auf den Code bezieht, an dem Sie gerade arbeiten, und eine größere Suite, die das gesamte Projekt testet.