Мы написали парсеры для различных форматов научных данных в Perl.Недавно я добавил набор тестов с файлом parser_*.t
для каждого формата и подформата.
Конечно, API синтаксического анализатора точно такой же, только данные, прочитанные из файлов примеров, которые используются для анализа парсингаотличается.Чтобы упростить тестовые файлы, я написал подпрограмму, которая передает объект анализатора и хэш-структуру, представляющую ожидаемые данные.Похоже, что
my $parser = new MyApp::Parser($file);
test_nested_objects = ($parser, {
property1 => "value",
property2 => 123,
subobject_accessor => {
property3 => "foobar",
}
}
Подпрограмма test_nested_objects
проходит по хешу и запускает тесты для всех свойств, определенных в хеш, например, если можно вызвать subobject_accessor
, возвращает объект и этот объект можно вызватьproperty3
.
Я проверил, сколько тестов выполняется всем файлом *.t
и добавил tests => 123
ко всем *.t
файлам.Теперь я добавил несколько проверок в общую функцию, и все планы неверны.
Как сообщить моему плану о подтестах?Я хотел бы добиться следующего:
- количество тестов, проведенных перед их выполнением для просмотра прогесов
- общее число автоматически увеличивается → без изменения чисел вручную при редактировании подпрограммы
- отдельные тесты в подчиненном элементе, видимые при запуске доказательства (скрывать тесты в вспомогательном элементе и возвращая только 0 или 1 недопустимо, поскольку мне действительно нужно знать, что не так с проанализированными данными)
Надеюсь, ты сможешь понять.Извините за длинную историю, но я думал, что люди, вероятно, не поймут без некоторого базового знания.