Running-Boost-Unit-Tests für verschiedene Prozesse

Ich möchte Unit-Tests in einem SystemC-Programm durchführen. Die Idee ist, mehrere Testsuiten mit mehreren Tests in jeder Suite zu haben. Jeder der Tests würde ein Zurücksetzen des SystemC-Frameworks erfordern (z. B. durch Aufrufen vonsc_simcontext::reset()), aber das ist eigentlich nicht möglich, da es einen Fehler gibt, der anscheinend nicht so schnell behoben werden kann. Aus diesem Grund habe ich mich für eine Problemumgehung entschieden.

Ich habe herausgefunden, dass alles gut funktioniert, wenn ich jeden Test mit einem anderen Prozess durchführe. Das folgende Code-Snippet gibt einen Überblick über das Schema, mit dem es funktioniert:

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

Jetzt möchte ich ein solches Testschema mit Boost Unit Test implementieren.

Ich habe die Interna der Boost Unit Test Bibliothek studiert und festgestellt, dassunit_test_main scheint die Funktion zu sein, die die Ausführung aller Tests auslöst. Ich konnte mir jedoch keine uneingeschränkte Methode für die Interaktion mit Boost Unit Test ausdenken, um jeden Test für einen anderen Prozess auszuführen.

Kennt jemand eine einfache Lösung, um jeden Test in einem anderen Prozess auszuführen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage