Как добавить метаданные в тест с помощью Google Test / Как отправить данные из теста Google в TestEventListener - PullRequest
0 голосов
/ 13 февраля 2020

Позвольте мне объяснить. В настоящее время я работаю над настройкой автографера для программных заданий в моей школе. Мы используем Gradescope для инфраструктуры автоматической оценки. Пропустив детали, Gradescope ожидает, что после выполнения тестовых примеров файл JSON будет заполнен их схемой.

Теперь вот где я борюсь. Я решил, что лучший способ настроить это - использовать Gtest Event Listeners . Это позволит мне получить информацию о тестах по мере их запуска и начать создавать JSON. Однако для работы Gradescope мне нужна некоторая информация, кроме того, пройдены ли тесты или нет. Например, мне нужно знать, сколько стоит этот конкретный тест в контексте задания, или как оно будет отображаться в Gradescope, и так далее, и так далее. Одним из способов решения этой проблемы может быть сохранение этой мета-информации в файле YAML, который будет прочитан моим слушателем. Однако я хотел бы держаться подальше от этого, поскольку он требует от пользователя тщательной настройки YAML, чтобы имена тестов совпадали, и он, как правило, становится более склонным к ошибкам пользователя (т. Е. Инструкторов, устанавливающих назначение).

В идеале я хотел бы, чтобы API содержал эти метаданные вместе с тестами. Я предполагал что-то вроде GRADED_TEST(TestSuite, TestName, /*weight=*/10, /*name=*/"Gradescope Test!", ...), которое заменит макросы TEST / TEST_F, предоставленные GTest. Однако я обнаружил, что это довольно сложно сделать, поскольку нет простого способа (насколько я могу судить), чтобы отправить информацию из объекта Test в TestEventListener. Есть идеи?

Спасибо!

1 Ответ

0 голосов
/ 11 марта 2020

(Я не собираюсь отвечать на этот вопрос, но пока не могу комментировать.)

Можете ли вы создать схему именования для вашего тестового примера, включающую такую ​​информацию?

Например: TEST(TestSuite, TestName_weight_10_name_GradescopeTest) Документ Google Test не поддерживает использование подчеркивания для названия теста, но работает нормально.

...