将QTest与其他框架进行比较

时间:2011-02-02 20:43:12

标签: c++ cppunit googletest boost-test qtestlib

你能比较C ++的流行单元测试框架和Qt的QTest吗?

(cppunit,加强测试,谷歌测试等...)

缺点有哪些优点? 谢谢。

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

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

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

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

主要缺点:

  • 默认情况下不支持灯具,您必须在setUp tearDown
  • 中解决此问题
  • QCOMPARE无法比较不同类型的值。例如,比较不同比率的两个std::chrono::duration是不可能的,尽管它们具有相同的可比性。仅针对QCOMPARE
  • 进行投射非常烦人

Boost简单易用,适用于大多数情况,没有惊喜。

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

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

答案 2 :(得分:1)

QtTest(高达Qt 5.7)不提供在uut中预期断言的能力,而Googletest确实具有死亡测试的概念,并且可以进行测试以测试断言。我们发现这在Googletest中非常有用,并且在QtTest中缺少它!