0

是否可以使用cxxunit或任何其他单元测试框架(不包括QtTestLib)来测试 qt 小部件?

如果是,那么还有两个问题:

  1. 如何?
  2. 由于我正在使用 valgrind 运行单元测试,这会报告一些错误吗?
4

2 回答 2

2

是的,这应该是可能的。我不确定 cxxunit 具体是什么,但理论上是可能的。

  1. 要正确测试 Qt 对象,您可能需要在全局设置和拆卸函数中创建/销毁 QApplication 对象。除非您专门测试 QApplication 功能,否则您应该只为测试应用程序的整个运行创建一个。这将允许您测试小部件的逻辑部分,但不容易测试小部件的外观或 UI 交互性。此外,测试某些项目可能依赖于运行应用程序的事件循环,这会更加困难。
  2. Valgrind 可能会报告一些错误。它还可能报告 Qt 代码的错误,特别是留给应用程序拆卸以回收的静态分配。
于 2010-12-02T16:14:57.357 回答
1

如果你想测试你的 UI,我建议使用像Squish这样的 UI 测试工具。我发现单元测试更适合测试小部件背后的逻辑,而不是小部件本身。如果您真的想对 Qt 小部件进行单元测试,我认为没有比 QtTestLib 更好的解决方案了。

Valgrind:有一个用于 Squish 的 valgrind 插件。不过我自己没用过那个。其他单元测试当然可以很容易地在 valgrind 中运行,尽管我不知道有什么解决方案可以完全自动化。必须确保真正抑制来自外部代码的所有警告,以便例如 x11 库中的某些错误不会触发单元测试失败。

于 2010-12-02T09:12:42.613 回答