У меня есть метод, который принимает структуру данных и записывает в OutputStream.Я хотел бы написать модульный тест, который гарантирует, что выходные данные этой функции для данного входа не изменятся неожиданно.
Я думаю, что у меня тест структурирован правильно, с использованием теорий JUnit.Мои @DataPoints - это пары идентификаторов и примерные структуры данных, и у меня есть @Theory, что выходные данные метода будут идентичны файлу, зарегистрированному для контроля версий, который я получаю с использованием getResourceAsStream с использованием идентификатора.
Однако болезненная часть - это создание этих файлов.Мое текущее очень уродливое решение - логическая константа с именем WRITE_TEST_OUTPUT, которая обычно ложна.Когда я хочу сгенерировать выходные файлы (либо потому, что я изменил список @DataPoints, либо изменилось желаемое поведение метода), я устанавливаю для этой константы значение true, и есть тест, который при значении true снова запускает функциюзаписать текущие выходные файлы в каталог в / tmp.Затем он утверждает, что константа является ложной, поэтому я не случайно проверяю версию, в которой константа является истинной.
Очень удобно, чтобы поколение выдавало себя за тест, чтобы я мог запустить его изв Затмении, но это похоже на ужасный клудж.Это похоже на то, что люди должны делать постоянно - какие решения нашли другие люди?