Обычно в тестовых системах, когда мы пишем новый тестовый тест, нам нужно где-то зарегистрировать тестовый файл, чтобы его можно было вызвать.Как автоматически регистрировать тестовые примеры в тестовой системе?
Например, в тестовой системе: TESTCASE(a,b){...}
можно сопоставить void testcase_a_b() {...}
и тестовая система может назвать каждый из этих void testcase_a_b()
, void testcase_c_d()
и т.д. от основной и, следовательно, выполнять все тестовые случаи.
Каков способ автоматической регистрации тестовых примеров в исполняемом файле? Например, в Google Test (как и в нескольких других тестовых средах), если мы вызываем RUN_ALL_TESTS()
, он автоматически выполняет все декларации, начинающиеся с TEST(a,b)
и т. Д. В исполняемом файле.
Как Google Test знает о существовании TEST(a,b)
в exe? Я пытаюсь понять (с точки зрения высокого уровня дизайна), что было бы простым способом реализовать такую систему, как на C++. где макрос, такой как TEST (a, b), автоматически присоединяется к списку допустимых тестовых примеров, поэтому его можно запустить из main, не беспокоясь о его регистрации отдельно.
Спасибо за ответ. Итак, что по вашему мнению является хорошим способом разработки системы, которая достигает тех же результатов без использования статической инициализации? Или нет другого пути? –
Если вы хотите, чтобы что-то произошло до вызова 'main', вам придется полагаться на статическую инициализацию. Очевидно, что Google решил реализовать его таким образом - я просто предупреждаю, что нужно тщательно соблюдать это, потому что было бы очень легко создать нестабильную реализацию, как описано в FAQ на C++. – MuertoExcobito
Ваша помощь очень ценится :) Большое спасибо. –