c - 使用 posix 线程的可测试 C 应用程序

标签 c unit-testing tdd pthreads testability

我必须编写看起来会做类似事情的代码(当然要复杂得多):

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?

最佳答案

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

关于c - 使用 posix 线程的可测试 C 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12991361/

相关文章:

eclipse - Eclipse 的持续集成插件

c - 为什么这个简单的程序不能编译?

c - 在没有两个循环的情况下反转字符串?

c - 使用 MACROS 进行队列

ruby-on-rails - Ruby on Rails 中 RESTful POST 的功能测试

c++ - 在练习 TDD(单元测试)的同时学习 OpenGL

c# - .net 中的测试驱动开发和单元测试

c - 通过函数操作变长二维数组

c++ - 如何在 boost 单元测试中比较 char* 和 string?

unit-testing - 测试 "proxies";好的 TDD 还是代码味道?