Позвольте мне объяснить. В настоящее время я работаю над настройкой автографера для программных заданий в моей школе. Мы используем 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. Есть идеи?
Спасибо!