Comments 4
Это все очень похоже на snapshot testing. Можно как-то поподробнее разъяснить разницу? Буквально вчера смотрел на snapshot testing в C# и нашел Verify, у вас есть опыт работы с ним?
Отдельный важный для меня вопрос -- интеграция тестирования с CI. Для корректной работы подобных тестов нужно за собой таскать артефакты (правильный вывод тестов), и это не всегда оптимальное решение. Есть ли какие-то стандартные решения у этой проблемы?
Да, и правда, очень похоже по подходу, но опыта использования Verify нет, поэтому тут не подскажу. Артефакты же это просто текстовые файлы .approved, которые складываются в папку c исходным кодом и при запуске тестов в CI/CD пайплайне при билде QuietReporter сообщит, если тест будет падать. Если их складывать чуть в стороне (в примере это папка Results), то они не сильно будут мешаться.
Когда-то я читал статью от авторов термина approval testing, и рассказывалось там, ЕМНИП, приблизительно следующее. Действительно, для данной техники есть несколько разных названий: snapshot testing, canonical testing (вроде бы) golden master, и наверняка что-то ещё. Но они выбрали именно approval testing, чтобы подчеркнуть ключевую особенность данных тестов: получившийся результат должен быть заапрувлен человеком, чтобы тест считался пройденным.
Если не считать этот момент принципиальным, то получается, что и разницы между подходами нет. Суть одна, названия лишь отличаются.
Дополнение к части 3
Часто при отладке и исправлении бага требуется воспроизвести его локально в виде теста. При использовании csv-таблиц в качестве источника данных для теста очень просто написать sql-запрос к рабочей базе, результат выполнения которого можно сразу скопировать в csv, и использовать для вопроизведения бага в юнитах.
Аппрувал тестирование в .NET. Как подружить тесты, таблицы и diff