Я хочу выполнить модульное тестирование в программе SystemC. Идея состоит в том, чтобы иметь несколько тестовых наборов с несколькими тестами в каждом пакете. Каждый из тестов потребует перезагрузки системы SystemC (например, путем вызова sc_simcontext::reset()
), но это на самом деле невозможно из-за некоторой ошибки, которая, по-видимому, не будет исправлена в ближайшее время. Поэтому я решил придумать обходной путь.Эксплуатационные испытания блоков в разных процессах
Я узнал, что если я запускаю каждый тест на другом процессе, все работает нормально. Следующий фрагмент кода дает представление о схеме я использовал, чтобы сделать его работу:
void test1() {
// ...
sc_start();
}
void test2() {
// ...
sc_start();
}
typedef std::function<void()> TestFunction;
void run_test(TestFunction test_function) {
pid_t pid = fork();
switch (pid) {
case -1:
throw std::runtime_error("Error forking process");
case 0:
test_function();
exit(0);
default:
waitpid(pid, nullptr, 0);
break;
}
}
int main() {
run_test(test1);
run_test(test2);
}
Теперь я хочу, чтобы реализовать такую схему тестирования с буст Test.
Я изучаю внутреннюю часть библиотеки тестов Boost Unit Test, и я обнаружил, что unit_test_main
, по-видимому, является функцией, которая запускает выполнение всех тестов. Но я не мог разработать неинтрузивный способ взаимодействия с Boost Unit Test, чтобы запускать каждый тест на другом процессе.
Кто-нибудь знает о простом решении для запуска каждого теста в другом процессе?