基于 Qt 的应用程序中使用的某些语义约定规定了应该并且不应构建单元测试的特定方式。尤其是:

  1. 许多 Qt 类都将父指针作为构造函数参数。并非为该参数指定的所有基本类型的子类对于任何给定的 Qt 类在语义上都是有效的。
  2. Qt 父对象拥有其子级的所有权,包括内存管理。这意味着父对象在子对象删除的同时也将其从自身删除了。

自动生成的测试用例的含义如下:

我们建议采用以下步骤对基于 Qt 的类进行单元测试:

  1. 自动生成单元测试;这将为您提供一个模板。
  2. 将其中一个生成的测试作为模板,最好在运行时通过(不抛出异常)。
  3. 使用一个测试作为模板,通过声明将测试对象分配替换为堆上的分配(使用 new)。
  4. 在测试结束时,如果使用父对象,则仅删除该对象(无论是主要测试对象还是次要测试对象)。
  5. 通过使用调试器观察最终测试对象的状态并插入适当的断言宏,来验证一个测试。
  6. 添加更多测试用例(使用图形用户界面对话框选项,并使用第一个经过验证的测试用例作为模板)。