0. Hören Sie auf Ihre Programmierer.
Wenn sie die Tests nicht ausführen, bedeutet dies, dass sie die Kosten (Warten auf die Ausführung der Tests, Behandlung falscher Fehler) als höher als den Wert (sofortiges Erkennen von Fehlern) einschätzen. Reduzieren Sie die Kosten, erhöhen Sie den Wert und die Mitarbeiter führen die Tests die ganze Zeit durch.
1. Machen Sie Ihre Tests 100% zuverlässig.
Wenn Sie jemals Tests haben, die mit falschen Negativen scheitern, sollten Sie sich sofort darum kümmern. Reparieren Sie sie, ändern Sie sie, beseitigen Sie sie, was auch immer nötig ist, um 100% ige Zuverlässigkeit zu gewährleisten. (Es ist in Ordnung, eine Reihe von unzuverlässigen, aber dennoch nützlichen Tests zu haben, die Sie separat ausführen können. Der Hauptteil der Tests muss jedoch zuverlässig sein.)
2. Ändern Sie Ihre Systeme, um sicherzustellen, dass alle Tests die ganze Zeit bestehen.
Verwenden Sie kontinuierliche Integrationssysteme, um sicherzustellen, dass nur vorübergehende Commits in der Haupt- / Beamten- / Veröffentlichungs- / beliebigen Zweigstelle zusammengefasst werden.
3. Ändern Sie Ihre Kultur so, dass 100% der Tests bestanden werden.
Unterrichten Sie die Lektion, dass eine Aufgabe erst "erledigt" ist, nachdem 100% der Tests bestanden wurden und sie in den Zweig main / official / release / whatever integriert wurde.
4. Machen Sie die Tests schnell.
Ich habe an Projekten gearbeitet, bei denen Tests eine Sekunde dauern, und an Projekten, bei denen sie den ganzen Tag dauern. Es besteht eine starke Korrelation zwischen der Zeit, die für die Durchführung von Tests benötigt wird, und meiner Produktivität.
Je länger die Tests dauern, desto seltener werden sie ausgeführt. Das bedeutet, dass Sie länger brauchen, ohne Feedback zu den vorgenommenen Änderungen zu erhalten. Dies bedeutet auch, dass Sie zwischen den Commits länger brauchen. Häufigeres Festschreiben bedeutet kleinere Schritte, die einfacher zusammenzuführen sind. Commit-Historie ist leichter zu verfolgen; Es ist einfacher, einen Fehler in der Historie zu finden. Auch das Zurückrollen ist einfacher.
Stellen Sie sich Tests vor, die so schnell ablaufen, dass es Ihnen nichts ausmacht, sie bei jeder Kompilierung automatisch auszuführen.
Schnelle Tests können schwierig sein (das hat das OP gefragt, richtig!). Entkopplung ist der Schlüssel. Mocks / Fakes sind in Ordnung, aber ich denke, Sie können es besser machen, indem Sie überarbeiten, um Mocks / Fakes überflüssig zu machen. Siehe Arlo Belshees Blog, beginnend mit http://arlobelshee.com/post/the-no-mocks-book .
5. Machen Sie Tests nützlich.
Wenn die Tests nicht scheitern, wenn Sie es vermasseln, was ist dann der Sinn? Bringen Sie sich bei, Tests zu schreiben, die die Fehler auffangen, die Sie wahrscheinlich verursachen. Dies ist eine Fähigkeit für sich und wird viel Aufmerksamkeit erfordern.