7

您能否将流行的 C++ 单元测试框架与 Qt 的 QTest 进行比较?

(cppunit,升压测试,谷歌测试等。)

有哪些优点缺点?谢谢你。

注意:GUI 测试对我们来说不是很重要。

4

3 回答 3

5

QTest 是我所知道的唯一用于单元测试 UI 组件的框架。我们已经使用它取得了一些成功,但坚持使用 Boost.Test 进行我们的常规单元测试。

于 2011-02-02T21:19:59.260 回答
2

根据我的经验,我不能推荐 Qt 测试框架。可以提到的两个可能的优点是:

  • QSignalSpy:验证发出的信号(仅对 Qt 有用),但这也可以与其他测试框架一起使用
  • 易于编写参数化测试

主要缺点:

  • 默认情况下不支持 Fixtures,您必须在 setUp tearDown 中解决它
  • QCOMPARE 不能比较不同类型的值。例如,比较std::chrono::duration具有不同比率的两个是不可能的,尽管它们具有同等的可比性。只是为了投射很烦人QCOMPARE

Boost 简单易用,在大多数情况下都能正常工作,毫无意外。

Google 测试框架的主要优势是对模拟的支持。但是这个特性也可以用于其他框架。它有很多很棒的特性,比如定义预期的调用序列、自定义匹配器、断言可以是人类可读的。但是熟悉这些功能需要时间(假设您需要它们)。

我想再提一个框架:Catch。它是一个只有标头的框架,只有很少的断言。例如。REQUIRE(a == b)将工作和价值观,a并将b在失败时得到解决。不需要夹具类或样板,您只需在测试用例中定义部分,它将执行 N 次,具有不同的部分。它非常简单,人类可读。另一方面,默认编译需要时间。

于 2017-09-11T07:25:16.260 回答
1

QtTest(直到 Qt 5.7)不提供在 uut 中期望断言的能力,而 Googletest 确实有死亡测试的概念,并且可以有一个测试断言的测试。我们发现这在 Googletest 中很有用,但令人烦恼的是 QtTest 中缺少它!

于 2016-08-11T07:06:29.523 回答