Тестируемое приложение 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: иметь указатели на фиктивные функции и вызывать их только через эти указатели. Для ваших тестов вы должны настроить указатели так, чтобы они указывали на ваши фиктивные функции. Но я не знаю, действительно ли ты хочешь пойти по этому пути...