Executando testes de unidade Boost em diferentes processos

Quero fazer testes de unidade em um programa SystemC. A idéia é ter vários conjuntos de testes com vários testes em cada conjunto. Cada um dos testes exigiria a redefinição da estrutura SystemC (por exemplo, chamandosc_simcontext::reset()), mas isso não é possível devido a algum bug que aparentemente não será corrigido em breve. Portanto, decidi criar uma solução alternativa.

Eu descobri que se eu executar cada teste em um processo diferente, tudo funcionará bem. O seguinte trecho de código fornece uma visão geral do esquema que usei para fazê-lo funcionar:

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);
}

Agora eu quero implementar um esquema de teste com o Boost Unit Test.

Eu estudei os internos da biblioteca do Boost Unit Test e descobri queunit_test_main parece ser a função que aciona a execução de todos os testes. Mas não consegui criar uma maneira não invasiva de interagir com o Boost Unit Test para executar cada teste em um processo diferente.

Alguém conhece uma solução simples para executar cada teste em um processo diferente?

questionAnswers(1)

yourAnswerToTheQuestion