Очень большой класс тестов можно сделать по-следующему принципу:
DoSomethingThatProduceFileAndReturnItsName - делает всю работу теста, сохраняет результаты в файл и возвращает ссылку на него.
CheckWithEtalon - проверяет (побайтно) указанный файл на совпадение с эталоном. Если эталона нет, то указанный файл объявляется эталоном и заносится в БД эталонов. О чём делается соответствующая запись в лог.
Всё просто. Написали тест. Вывели результаты в файл. Получили эталон на первом прогоне.
Дальше просто смотрим на совпадение с эталоном. Если тест не прошёл - смотрим дифу. Процесс вывода дифы - тоже можно автоматизировать.
Главное, что НИКАКИЕ эталоны РУКАМИ - делать не приходится. Алгоритм сам готовит себе эталонные данные. И потом - сам себя проверяет.
Попробуйте. Может быть - вам понравится.
Как было тут верно подмечено одним читателем - использование эталонов может снизить порог вхождения в мир тестов.
Про конкретную реализацию этого на DUnit - я чуть позже напишу.
... to be continued ...
CheckWithEtalon(DoSomethingThatProduceFileAndReturnItsName);
DoSomethingThatProduceFileAndReturnItsName - делает всю работу теста, сохраняет результаты в файл и возвращает ссылку на него.
CheckWithEtalon - проверяет (побайтно) указанный файл на совпадение с эталоном. Если эталона нет, то указанный файл объявляется эталоном и заносится в БД эталонов. О чём делается соответствующая запись в лог.
Всё просто. Написали тест. Вывели результаты в файл. Получили эталон на первом прогоне.
Дальше просто смотрим на совпадение с эталоном. Если тест не прошёл - смотрим дифу. Процесс вывода дифы - тоже можно автоматизировать.
Главное, что НИКАКИЕ эталоны РУКАМИ - делать не приходится. Алгоритм сам готовит себе эталонные данные. И потом - сам себя проверяет.
Попробуйте. Может быть - вам понравится.
Как было тут верно подмечено одним читателем - использование эталонов может снизить порог вхождения в мир тестов.
Про конкретную реализацию этого на DUnit - я чуть позже напишу.
... to be continued ...
Комментариев нет:
Отправить комментарий