Jedynym powodem, dla którego test jednostkowy może się nie powieść, jest uwzględnienie czasu (głównie w przypadku testowanej elektroniki). Jednak nawet w tych przypadkach celem powinno być usunięcie problemu z synchronizacją z testu urządzenia, np. przez wydłużenie/wyłączenie limitu czasu lub innego problemu, jeśli to możliwe. Gdy nie jest to możliwe, powinno być dobrze udokumentowane.
Innym sposobem na usunięcie problemów z określaniem czasu i określenie deterministycznych testów jest napisanie kodu pośredniczącego dla wszystkich zewnętrznych interfejsów, z pewną metodą wtrysku, tj. Możliwość ustawienia wartości, które zwrócą metody zewnętrznego interfejsu. Ustawiając w ten sposób test jednostkowy, można dosłownie przetestować wszystko, również pod kątem każdego błędu.
(historia: pracowałem w firmie, w której kilka testów jednostkowych okazjonalnie nie udawało się, tylko kilka osób mogło przeanalizować, czy były to poważne błędy, czy problem z regulacją czasu, zaoszczędzi to dużo czasu na wykonanie dobrych testów jednostkowych w pierwsze miejsce).
+1 do oddzielania * jednostki * testy, które potwierdzają poprawność programu od * akceptacji * testów, które potwierdzają, że program spełnia określone wymagania. –