Вы, вероятно, запрашиваете тестирование на «золотых» данных. Я не знаю, существует ли конкретный термин для такого рода испытаний, принятый во всем мире, но именно так мы это делаем.
Создать базовый класс приборов. Он в основном имеет «void DoTest (string fileName)», который будет считывать конкретный файл в память, выполнять абстрактный метод преобразования «string Transform (string text)», затем считывать fileName.gold из того же места и сравнивать преобразованный текст с ожидаемым , Если содержимое отличается, оно выдает исключение. Исключенное исключение содержит номер строки первого различия, а также текст ожидаемой и фактической строки. Поскольку текст стабилен, обычно этой информации достаточно, чтобы сразу определить проблему. Обязательно пометьте строки «Expected:» и «Actual:», иначе вы будете угадывать, что есть, когда смотрите на результаты теста.
Затем у вас будут специальные тестовые таблицы, в которых вы реализуете метод Transform, который делает правильную работу, а затем у вас будут тесты, которые выглядят так:
[Test] public void TestX() { DoTest("X"); }
[Test] public void TestY() { DoTest("Y"); }
Имя неудачного теста мгновенно скажет вам, что сломано. Конечно, вы можете использовать тестирование строк для группировки похожих тестов. Наличие отдельных тестов также помогает в ряде ситуаций, таких как игнорирование тестов, передача тестов коллегам и так далее. Нет ничего сложного в том, чтобы создать фрагмент, который за секунду создаст для вас тест, вы потратите гораздо больше времени на подготовку данных.
Тогда вам также понадобятся некоторые тестовые данные и способ, которым ваш базовый прибор найдет их. Обязательно установите правила для этого проекта. Если тест не пройден, выведите фактический вывод в файл рядом с золотом и сотрите его, если тест пройден. Таким образом, вы можете использовать diff инструмент, когда это необходимо. Когда золотые данные не найдены, тест завершается неудачно с соответствующим сообщением, но фактический вывод записывается в любом случае, так что вы можете проверить его правильность и скопировать, чтобы он стал «золотым».