Ожидание в тестах

Решил начать писать небольшие заметки о тестировании, автоматизации тестирования, хороших и плохих практиках.

За идею первого поста спасибо @dkushnikov. Итак, цитирую:

подскажи плиз, как делать тест, если между действием и результатом должно пройти время? хорошо ли изменение времени сервера?

я правильно понимаю что тебе нужно дождаться какого-то события, прежде чем выполнять проверку?

ну в общем – да. Пример: нужно проверить, что статус сущности изменится через x дней. Статус меняет демон на сервере.

тогда задача решается waiter’ом - https://groups.google.com/forum/?fromgroups=#!topic/webdriver/nygYQKUYSuQ … дожидаешься нужного события, потом ассёртишь состояние

а если ждать надо дни?

значит надо в тестовом окружении заменить дни на секунды например, иначе какой смысл в тестах которые идут дни? Оо

Можно конечно и менять время на сервере, но есть риск нарваться на проблемы при параллельном выполнении тестов. Так же не стоит использовать статические ожидания вроде Thread.sleep(). Во-первых, никто не гарантирует что за это время наступит нужное событие, а во-вторых, если запустить много таких тестов, то вне зависимости от того, быстро или медленно отрабатывает тестируем приложение, вы всё равно будете ждать это время, а потом жалуются что тесты долго выполняются и просить больше машинных ресурсов =).

comments powered by Disqus