在CppUnit中指定测试依赖项?

Tho*_*ews 4 c++ wxwidgets cppunit visual-studio-2008

我想在CppUnit中指定测试顺序.根据我的研究,测试顺序取决于编译器或链接器以及它们如何遇到文件.

如何在CppUnit中指定依赖项?

例如,让我们考虑一个有四行的矩形类.每行包含两个点类.假设每个类都在一个单独的模块或翻译单元中.

struct Point
{
  int x;
  int y;
};

struct Line
{
  Point a;
  Point b;
};

struct Rectangle
{
  Line top;
  Line left;
  Line right;
  Line bottom;
};
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,应首先测试Point类,然后测试Line类,最后测试Rectangle类.如果Line或Point类有问题,没有理由测试Rectangle类. 这是一个非常简单的例子.

对于复合类,应首先测试内部类或成员数据类型类.

我们假设每个类都有一个相关的测试类.每个测试类都有自己发布的测试方法(已注册到CppUnit列表),位于单独的文件中.测试行的类不知道点的测试类; 和矩形类似.编译这些测试用例类时,它们的顺序取决于编译器和链接器.

那么,如何订购测试用例?

仅供参考,我使用的是CppUnit,wxTestRunner和Visual Studio 2008

Jos*_*ley 5

你要做的不是单元测试."纯粹"单元测试旨在测试单个单元(单个类),使用模拟或虚假对象代替真正的依赖; 一旦你测试了类之间的依赖关系,那就是集成测试,而不是单元测试.

有了免责声明......

看起来您可以使用CPPUNIT_TEST_SUITE_NAMED_REGISTRATION来创建多个套件,然后按顺序运行每个套件,前提是所有以前的套件都已通过,但您可能需要修改或替换wxTestRunner测试运行器才能执行此操作.

CppUnit的Creating TestSuite页面还有其他注册测试套件的选项; 例如,CPPUNIT_REGISTRY_ADD允许您创建套件层次结构,这可以让您对排序进行一些控制,但我没有看到任何方法导致一个套件中的故障中止后续测试.

最后,正如一个建议,CppUnit可能不是最好的C++单元测试框架.我个人是Google Test的粉丝,但Boost.TestUnitTest ++也很好.(这个答案介绍了一个名为Saru的个人项目,听起来它可能会为您提供订购测试所需的灵活性.)