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 で関数をモックする方法を 1 つだけ知っています。モック可能な関数への関数ポインターを持ち、そのポインターを介してのみ呼び出します。テストでは、代わりにモック関数を指すようにポインターを調整します。しかし、あなたが本当にその道を進みたいかどうかはわかりません....

于 2013-12-18T06:57:25.567 に答える