【发布时间】:2010-09-23 15:22:28
【问题描述】:
有什么好的方法可以对析构函数进行单元测试吗?就像说我有一个像这样(人为)的类的例子:
class X
{
private:
int *x;
public:
X()
{
x = new int;
}
~X()
{
delete x;
}
int *getX() {return x;}
const int *getX() const {return x;}
};
有没有什么好的方法可以对它进行单元测试,以确保 x 被删除,而不会用 #ifdef TESTs 弄乱我的 hpp 文件或破坏封装?我看到的主要问题是很难判断 x 是否真的被删除了,特别是因为在调用析构函数时对象超出了范围。
【问题讨论】:
-
您可以使用具体对象而不是指针,析构函数将根据语言规则(即通过 RAII 模式)自动清理。如果您不希望立即构造对象,则可以使用智能指针/包装器,例如一个 std::unique_ptr 或 std::optional。当然,除非您正在编写自己的智能指针/包装器并且想要测试它! :)
标签: c++ unit-testing destructor cppunit