tha*_*sme 8 unit-testing raii tradeoff design-principles
RAII(资源获取是初始化)是构建对象的建议方法之一.它如何与单元测试原则相关:构造函数中没有完成复杂的工作?尤其是"新"运算符没有明确创建对象?但是,有时创建某些对象需要一些更复杂的步骤,并且将工厂传递给构造函数会使API"变脏",这意味着降低了易读性.同时满足这两个原则的一般方法是什么?
我在SO上找到了另一个主题:堆栈分配RAII对象与DI原理,但它看起来像一个更普遍的问题,并没有得到很好的解释.
是的,在构造函数中创建具体类会使执行此操作的类复杂化,向类添加依赖项,并使测试更加困难.
但是,RAII不是构建对象的方式,而是释放资源的方式.析构函数释放资源的类不必构造对象,尽管它通常会这样做:请参阅资源获取的含义是初始化(RAII)?.
因此,如果需要,在类外部创建使用它的资源,如果需要,可以使用工厂等,但是然后让使用该资源的类使用RAII清理它.