0

我必须编写看起来像这样的代码(当然要复杂得多):

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 吗?

4

1 回答 1

0

我只知道在 C 中模拟函数的一种方法:拥有指向可模拟函数的函数指针,并且只能通过该指针调用它们。对于您的测试,您可以调整指针以指向您的模拟函数。但我不知道你是否真的想走那条路......

于 2013-12-18T06:57:25.567 回答