Запуск модульных тестов Boost на разных процессах

Я хочу провести модульное тестирование в программе 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);
}

Теперь я хочу реализовать такую ​​схему тестирования с помощью Boost Unit Test.

Я изучал внутреннюю часть библиотеки Boost Unit Test и обнаружил, чтоunit_test_main Кажется, это функция, которая запускает выполнение всех тестов. Но я не мог придумать ненавязчивый способ взаимодействия с Boost Unit Test, чтобы каждый тест выполнялся в отдельном процессе.

Кто-нибудь знает простое решение для запуска каждого теста в другом процессе?

Ответы на вопрос(1)

Ваш ответ на вопрос