Являются ли действия модульного тестирования с временным интервалом с помощью Thread.Sleep плохими?

Если у меня есть испытуемый с таймером, который заставляет выполнять какое-то действие через определенный интервал времени, как лучше это проверить?

Один метод - обернуть таймер в интерфейс и внедрить его как зависимость.

Однако я бы хотел избежать создания еще одной абстракции. Кажется, я могу избежать этого, вставив интервал обновления, а не таймер. Затем в моем тесте (предполагая стиль тестирования AAA) я помещаю Thread.Sleep после Act и перед Assert , используя очень маленькое значение времени, поэтому тест не займет много времени.

Это плохая идея? Я знаю, что это, вероятно, не полностью соответствует принципам TDD, но похоже, что должна быть линия, где вы перестанете окружать все контрактом и вводить его.

7
задан Community 23 May 2017 в 10:33
поделиться