c++ - 在 CppUnit 中指定测试依赖项?

标签 c++ visual-studio-2008 wxwidgets cppunit

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

如何在CppUnit中指定依赖关系?

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

struct Point
{
  int x;
  int y;
};

struct Line
{
  Point a;
  Point b;
};

struct Rectangle
{
  Line top;
  Line left;
  Line right;
  Line bottom;
};

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

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

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

那么,如何对测试用例进行排序呢?

仅供引用,我正在使用 CppUnit、wxTestRunner 和 Visual Studio 2008

最佳答案

您尝试做的并不是真正的单元测试。 “纯”单元测试旨在测试单个单元(单个类),使用模拟或假对象代替真实依赖;一旦您测试类之间的依赖关系,那就是集成测试,而不是单元测试。

放弃免责声明...

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

CppUnit 在 Creating TestSuite 上的页面有其他注册测试套件的选项; CPPUNIT_REGISTRY_ADD ,例如,允许您创建套件的层次结构,这应该可以让您对顺序进行一些控制,但我看不出有任何方法可以让一个套件中的失败中止后续测试。

最后,作为一个建议,CppUnit 可能不是目前最好的 C++ 单元测试框架。我个人是 Google Test 的粉丝, 但是 Boost.TestUnitTest++也不错。 (This answer 介绍了一个名为 Saru 的个人项目,听起来它可能会给您带来订购测试所需的灵 active 。)

关于c++ - 在 CppUnit 中指定测试依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3073965/

相关文章:

wxwidgets - 如何在 wxGrid 中禁用多重选择?

c++ - 使用VS2012构建wxWidgets后,我可以删除lib文件夹中的哪些文件?

c++ - C++ 11支持Unicode的程度如何?

c++ - C++中哈希表的实现

.net - 是否可以在 linq to sql 的实体类中创建自定义方法

c++ - msvc9、iostream 和 2g/4g plus 文件

excel - 我可以从数据源导入 INTO excel 而无需迭代吗?

c++ - 使用 ostream 使用 opengl 在 SDL 中打印乐谱?

c++ - C++ 中模板化对象的模板化列表

c++ - wxSocket wxWidgets 失败