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);
}
지금 내가 부스트 단위 테스트와 같은 테스트 방식을 구현하려면 다음 코드는 나는 그것이 작동되도록하는 데 사용되는 방식의 개요를 제공합니다.
부스트 유닛 테스트 라이브러리의 내부를 연구 해본 결과 unit_test_main
이 모든 테스트의 실행을 트리거하는 것으로 나타났습니다. 하지만 Boost Unit Test와 상호 작용할 수있는 비 간섭 식 방식을 고안하여 각 테스트를 다른 프로세스에서 실행하는 것은 불가능했습니다.
누구나 다른 프로세스에서 각 테스트를 실행하기위한 간단한 해결책을 알고 있습니까?