Автоматическое использование test_n()
От: Hоmunculus  
Дата: 01.01.26 22:15
Оценка:
Есть тестовая консольная прога типа:
bool test_1() {…}
bool test_2() {…}
bool test_3() {…}
bool test_4() {…}

void main()
{
   test_1();
   test_2();
   test_3();
   test_4(); 
}


Хочу в main ничего не писать. То есть при написании test_5 чтоб ее запуск автоматически добавлялся в main
Как лучше такое провернуть?
Re: Автоматическое использование test_n()
От: Великий Мессия google
Дата: 01.01.26 22:22
Оценка:
фокус покус

#include <stdlib.h>

struct Init
{
   Init() { printf("main!\n"); }
}

Init init;

int main() {}


выхлоп

main!

Re[2]: Автоматическое использование test_n()
От: Hоmunculus  
Дата: 01.01.26 22:27
Оценка:
Здравствуйте, Великий Мессия, Вы писали:

И? Писать каждый раз новый класс и делать глобальную переменную этого класса? Ну так добавление глобальной переменной — это все равно что строка в main. Суть не в том, чтоб в main не писать, а в том, чтоб не писать ничего нигде кроме самой новой тестовой функции
Re[3]: Автоматическое использование test_n()
От: Великий Мессия google
Дата: 01.01.26 22:31
Оценка:
я показал логику которой пользуют аля гуглтест

а класс не обязательно писать
если мета программирование
в конце концов есть еще макросы

а если это голый С то тоже можно в спец секцию внести
которая будет вызываться до main
Re[4]: Автоматическое использование test_n()
От: Hоmunculus  
Дата: 01.01.26 22:36
Оценка:
Здравствуйте, Великий Мессия, Вы писали:

А если мне не надо до main? То есть в начале main какая-то инициализация ядра, потом сами тесты ядра, потом освобождение ядра.
Re[5]: Автоматическое использование test_n()
От: Великий Мессия google
Дата: 01.01.26 22:43
Оценка:
почему бы для начала не изучить как это сделано в существующих тест системах, а не изобретать велосипед?
к примеру в
https://github.com/catchorg/Catch2.git
https://github.com/google/googletest.git

если не надо до main
то изучить как сделано выше
или догадаться строить свою систему подписок и выполнения событий окученных макросами = что бы получить то что уже сделано до вас
Re: Автоматическое использование test_n()
От: tapatoon  
Дата: 03.01.26 06:05
Оценка:
Здравствуйте, Hоmunculus, Вы писали:

H>Как лучше такое провернуть?


gtest
Центр ИПсО Сил Специальных Операций
Re[3]: Автоматическое использование test_n()
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 03.01.26 09:32
Оценка:
Здравствуйте, Hоmunculus, Вы писали:

H>И? Писать каждый раз новый класс и делать глобальную переменную этого класса? Ну так добавление глобальной переменной — это все равно что строка в main. Суть не в том, чтоб в main не писать, а в том, чтоб не писать ничего нигде кроме самой новой тестовой функции


Гугл тест тебе в руки. Там регистрация тестов в макросах завёрнута. Ну или сам можешь сделать, принцип тебе показали
Маньяк Робокряк колесит по городу
Re: Автоматическое использование test_n()
От: F3V  
Дата: 03.01.26 11:03
Оценка:
Здравствуйте, Hоmunculus, Вы писали:

H>Хочу в main ничего не писать. То есть при написании test_5 чтоб ее запуск автоматически добавлялся в main

H>Как лучше такое провернуть?

Автоматическое добавление плохо, т.к. это становится внедрением зависимостей (DI) без определённых соглашений.
Иногда нужно запустить часть тестов или один тест, т.е. движок тестов должен это переваривать.
Тесты могут быть запущены в специфической конфигурации или среде, т.е. стандартные движки могут не справиться.

Для переносимости я бы простыми инклудами ограничился, которые можно было бы посадить на произвольную платформу,
в том числе и на стандартные тестовые движки.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.