почему бы для начала не изучить как это сделано в существующих тест системах, а не изобретать велосипед?
к примеру в
https://github.com/catchorg/Catch2.git
https://github.com/google/googletest.git
если не надо до main
то изучить как сделано выше
или догадаться строить свою систему подписок и выполнения событий окученных макросами = что бы получить то что уже сделано до вас