Ejecución de pruebas unitarias de Boost en diferentes procesos

Quiero hacer pruebas unitarias en un programa SystemC. La idea es tener múltiples conjuntos de pruebas con varias pruebas en cada conjunto. Cada una de las pruebas requeriría restablecer el marco de SystemC (por ejemplo, llamandosc_simcontext::reset()), pero eso en realidad no es posible debido a algún error que aparentemente no se solucionará pronto. Por lo tanto, decidí proponer una solución alternativa.

Descubrí que si ejecuto cada prueba en un proceso diferente, todo funciona bien. El siguiente fragmento de código ofrece una descripción general del esquema que utilicé para que funcione:

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

Ahora quiero implementar dicho esquema de prueba con Boost Unit Test.

He estado estudiando los aspectos internos de la biblioteca Boost Unit Test y he descubierto queunit_test_main Parece ser la función que desencadena la ejecución de todas las pruebas. Pero no pude idear una forma no intrusiva de interactuar con Boost Unit Test para ejecutar cada prueba en un proceso diferente.

¿Alguien sabe de una solución simple para ejecutar cada prueba en un proceso diferente?

Respuestas a la pregunta(1)

Su respuesta a la pregunta