C 单元测试原子库函数

C 单元测试原子库函数,c,multithreading,unit-testing,atomic,testcase,C,Multithreading,Unit Testing,Atomic,Testcase,如何对作为API一部分的原子函数进行单元测试?如何保证函数的原子性在这种依赖于时间的情况下得到测试?我使用的系统本质上是多线程的,包含许多实时元素,并且是用C编写的 我的第一个想法可能是设置一个或多个线程,这些线程被设置为尝试和修改被测原子函数正在运行的相同数据,然后检查数据的结果值是否与预期值不同。这是一种有效的方法吗?或者我缺少了一个明显的解决问题的方法?根据定义不可进行单元测试,对不起。您不能像SergeyA所说的那样进行单元测试。您可以通过为这些函数创建存根来测试传递到API中的输入,但

如何对作为API一部分的原子函数进行单元测试?如何保证函数的原子性在这种依赖于时间的情况下得到测试?我使用的系统本质上是多线程的,包含许多实时元素,并且是用C编写的


我的第一个想法可能是设置一个或多个线程,这些线程被设置为尝试和修改被测原子函数正在运行的相同数据,然后检查数据的结果值是否与预期值不同。这是一种有效的方法吗?或者我缺少了一个明显的解决问题的方法?

根据定义不可进行单元测试,对不起。您不能像SergeyA所说的那样进行单元测试。您可以通过为这些函数创建存根来测试传递到API中的输入,但实际上无法测试API正在做什么。您只能进行一次测试,证明实现是错误的,而不能证明它是正确的。类似于有很多线程以原子增量敲打同一个变量。最后,您应该能够看到增量的总数是否正确。你应该用不同的优化级别来测试,为这种操作选择的代码在很大程度上取决于这一点。有什么方法可以测试原子性吗?