在C闭包上进行单元测试是否有任何优先权?
我编写的函数通常从在其使用点附近定义的闭包开始,然后(可能)稍后毕业到完整函数.这对于保持接口清洁并使线性方式更容易读取代码非常有用,但它破坏了编写单元测试.
是否有任何技巧或C单元测试框架可以处理,比如,一些小函数来计算在main()中定义为闭包的几何几何?
解决方法
我认为你应该测试函数,而不是lambda函数.如果函数包含lambda函数,那么它们就是实现细节.如果您通过将lambda函数创建为变量来重用它们,那么这些函数很容易作为函数进行单元测试.
例如.
auto lambda = [](/* params */){/* stuff */}; // this can be unit tested void func() // this can be unit tested { // the lambda is an implementation detail of the function sort(/* stuff */,[](/* params */){/* stuff */}); }