вторник, 2 апреля 2013 г.

Тесты и эталоны

Очень большой класс тестов можно сделать по-следующему принципу:


CheckWithEtalon(DoSomethingThatProduceFileAndReturnItsName);


DoSomethingThatProduceFileAndReturnItsName - делает всю работу теста, сохраняет результаты в файл и возвращает ссылку на него.

CheckWithEtalon - проверяет (побайтно) указанный файл на совпадение с эталоном. Если эталона нет, то указанный файл объявляется эталоном и заносится в БД эталонов. О чём делается соответствующая запись в лог.

Всё просто. Написали тест. Вывели результаты в файл. Получили эталон на первом прогоне.

Дальше просто смотрим на совпадение с эталоном. Если тест не прошёл - смотрим дифу. Процесс вывода дифы - тоже можно автоматизировать.

Главное, что НИКАКИЕ эталоны РУКАМИ - делать не приходится. Алгоритм сам готовит себе эталонные данные. И потом - сам себя проверяет.

Попробуйте. Может быть - вам понравится.

Как было тут верно подмечено одним читателем - использование эталонов может снизить порог вхождения в мир тестов.

Про конкретную реализацию этого на DUnit - я чуть позже напишу.

... to be continued ...

Комментариев нет:

Отправить комментарий