Очень важный момент описан Михаилом Долинским, касающийся автоматизации тестирования задач. На мой взгляд это незаменимый инструмент для опытных команд, которые сдают весь контест на +ноль. Жаль, что в свое время наша команда его не использовала.
Суть идеи заключается в создании двух батников, которые должны находится в той же директории, что и *.exe файл откомпилированной программы: test.bat (для проверки одного теста) и all.bat (для проверки всех тестов). Помимо батников нужно заготовить набор локальных тестов, корректность которых не вызывает сомнений. Эти тесты должны находится все в той же директории.
Я проверил метод на задаче "Путешествие шахматного коня". Заготовил три теста. Тест представляет собой пару файлов x.in и x.out, где x – это порядковый номер теста.
1.in: A8 A8
1.out: 0
2.in: A5 C2
2.out: 3
3.in: A1 B3
3.out: 3
* после двоеточия написано содержание файла
Теперь поглядим на содержание самих батников:
Если программа получает и выводит данные на консоль, то файл test.bat должен выглядеть так:
- @echo off
- dolinskiy_1.exe <%1.in >output.txt
- fc output.txt %1.out
- pause
Комментарии: dolinskiy_1.exe – это имя *.exe файла, принимающего на вход данные содержащиеся в файле %1.in, где %1 – это первый параметр, с которым запускается батник test.bat. Т.е. если в качестве первого параметра была передана цифирь 5, то программа будет брать входные данные из файла 5.in. Подстрока >output.txt означает, что результат работы программы будет записан в файл output.txt. В строчке 3 происходит сравнение эталонного файла %1.out и получившегося output.txt.
Если же программа работает с файлами input.txt(входные данные) и output.txt(выходные данные), то файл test.bat следует изменить на:
- @echo off
- del input.txt
- del output.txt
- copy %1.in input.txt
- dolinskiy_1.exe
- fc output.txt %1.out
- pause
Комментарии: В строчках 2 и 3 позаботимся о том, чтобы файлы input.txt и output.txt не существовали в текущей директории. В строчке 4 копируем содержимое входных данных текущего теста (%1.in) в файл input.txt. Затем запускаем нашу программу (dolinskiy_1.exe). Результат ее работы будет находится в файле output.txt. Следовательно нам осталось сравнить получившийся ответ с эталонным(%1.out), что мы и делаем в строчке 6.
Структура файла all.bat более простая:
- @echo off
- cls
- for %%i in (1,2,3) do call test.bat %%i
Комментарии: В строчке 2 очищается экран консоли. Затем в цикле перебираются значения параметра %%i, который может принимать значения: 1,2 или 3, и последовательно вызываем батник test.bat с этим параметром. Тем самым мы проверим работу программы на всех 3-ех заготовленных тестах. Если количество тестов будет больше, необходимо создать тестовые пары *.in и *.out, а также дописать номера самих тестов в батнике all.bat.
Также смотрите видеоурок на эту тему
Комментариев нет:
Отправить комментарий