Eine gute Möglichkeit, Tests zu schreiben, besteht darin, die Verantwortlichkeit zu erhöhen. Wenn ein Entwickler jemand anderem genau erklären muss warum Wenn sie keine Unit-Tests geschrieben haben, ist die Wahrscheinlichkeit größer, dass sie dies tun. Die meisten Firmen bei denen ich gearbeitet habe, haben verlangt, dass jeder vorgeschlagene Commit zu einem Stamm von einem anderen Entwickler vor dem Commit überprüft wird, und dass der Name des Überprüfers in den Commit-Kommentaren angegeben wird. In dieser Umgebung können Sie Ihrem Team sagen, dass sie nicht zulassen sollten, dass der Code die Überprüfung durch Kollegen "besteht", wenn keine Unit-Tests vorhanden sind.
Jetzt haben Sie eine Kette von Verantwortlichkeiten. Wenn ein Entwickler Code festschreibt, ohne den Prüfer zu nennen, können Sie ihn fragen, wer den Code geprüft hat (und wie ich auf die harte Tour gelernt habe, macht es keinen Spaß, seinem Chef "niemand" zu sagen, wenn man ihm diese Frage stellt!). Wenn Sie bemerken, dass Code ohne Unit-Tests übergeben wird, können Sie sowohl den Entwickler und den Code-Reviewer, warum keine Unit-Tests enthalten waren. Die Möglichkeit, diese Frage gestellt zu bekommen, ermutigt Code-Reviewer, auf Unit-Tests zu bestehen.
Ein weiterer Schritt, den Sie unternehmen können, ist die Installation eines Commit-Hooks in Ihrem Versionsverwaltungssystem, der das gesamte Team per E-Mail benachrichtigt, wenn ein Commit durchgeführt wurde, zusammen mit den Dateien und sogar dem Code, aus dem der Commit besteht. Dies sorgt für ein hohes Maß an Transparenz und ermutigt die Entwickler dazu, sich an die Regeln zu halten. Natürlich funktioniert dies nur, wenn es sich an die Anzahl der Übertragungen Ihres Teams pro Tag anpasst.
Dies ist eher eine psychologische als eine technische Lösung, aber sie hat sich für mich bei der Leitung von Software-Teams bewährt. Sie ist auch ein bisschen sanfter als der Gummischlauch, der in einer anderen Antwort vorgeschlagen wurde :-)