Тестируемое приложение C с использованием потоков posix

Я должен написать код, который будет выглядеть как-то так (конечно, намного сложнее):

int stop;
int isStopped;

void workerFunction(){
    while(!stop){
        //...
    }
    isStopeed = 1;
}

startThread(){
    int newThreadPid = pthread_create(..., NULL, workerFunction, NULL);
}

stopThread(){
    stop = 1;
}

Мой вопрос: есть ли методы, которые могут сделать такой код тестируемым? Я не думаю, что написание тестов, как:

startThread();
stopThread();
sleep(1);
ASSERT(isStopped);

это лучшая идея Как проверить функцию stopThread() без вызова системной функции? Есть ли способ издеваться над pthread_create?

1 ответ

Я знаю только один способ симулировать функции в C: иметь указатели на фиктивные функции и вызывать их только через эти указатели. Для ваших тестов вы должны настроить указатели так, чтобы они указывали на ваши фиктивные функции. Но я не знаю, действительно ли ты хочешь пойти по этому пути...

Другие вопросы по тегам