C++ 隔离单元测试

C++ 隔离单元测试,c++,unit-testing,C++,Unit Testing,一般来说,良好的OO实践足以使单元测试保持独立。然而,当事情变得非常糟糕,导致程序崩溃、破坏内存空间等,事情可能会溢出到相邻的测试中,并给出误导性的结果,或者只是因为它会导致测试框架的崩溃而变得烦人。有人知道有任何现有的单元测试框架具有高级别的隔离来防止这种情况吗?例如,一个简单的方法是在命令行上一次执行一个fixture,但我担心很难很好地聚合结果。目前我想在C++项目中使用C++项目,但是如果谷歌测试框架或者C测试有这样的支持,我就不会死在那个框架上。我简单地看了一下这两个人,我认为我没有看

一般来说,良好的OO实践足以使单元测试保持独立。然而,当事情变得非常糟糕,导致程序崩溃、破坏内存空间等,事情可能会溢出到相邻的测试中,并给出误导性的结果,或者只是因为它会导致测试框架的崩溃而变得烦人。有人知道有任何现有的单元测试框架具有高级别的隔离来防止这种情况吗?例如,一个简单的方法是在命令行上一次执行一个fixture,但我担心很难很好地聚合结果。目前我想在C++项目中使用C++项目,但是如果谷歌测试框架或者C测试有这样的支持,我就不会死在那个框架上。我简单地看了一下这两个人,我认为我没有看到任何与这种严格隔离的东西。我主要对Linux感兴趣,但跨平台将是理想的选择

在任何情况下,如果有人感兴趣,我都会使用cppunit进行一个小型Linux(可能还有其他)概念验证。在以下位置查找文件:
您需要helper\u宏。*、序列化的\u test\u result.*和test\u caller.

没有这样的框架。您需要为每个测试创建单独的测试套件,以便它们是单独的文件。这将允许它们在完全隔离的情况下运行


你可以用它来代替它,因为它可以检测Windows上的内存泄漏,我认为这是朝着正确方向迈出的一步。

这类事情的自然隔离单元是进程,我想说这也是这类问题的自然粒度级别:

如果您的所有单元测试都编译成一个可执行文件,那么它们的速度很快,以至于您不在乎崩溃的单元测试是否会迫使您重复(一组)套件


另一方面,如果您的所有单元测试都太多,并且运行时间太长,以至于一个崩溃的单元中断了测试运行是一个很大的麻烦,那么您应该将它们拆分为多个EXE,以使您的单元测试更简单。(链接时间,开发人员很容易只运行一个子集,…)

为什么很难汇总结果?我不确定我是否遵循了这一点。如果单元测试使您的测试程序崩溃,后续测试将不会运行。修复测试(或被测系统)后,将运行后续测试。你能举一个例子,说明你正在努力防止哪种泄漏吗?你应该增加这个功能。这个测试只能检测Windows下的内存泄漏。@honk-不知道。谢谢