Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
QTest与其他框架的比较 你能比较C++的流行单元测试框架和Qt?< /P>的QTest吗?_C++_Cppunit_Googletest_Boost Test_Qtestlib - Fatal编程技术网

QTest与其他框架的比较 你能比较C++的流行单元测试框架和Qt?< /P>的QTest吗?

QTest与其他框架的比较 你能比较C++的流行单元测试框架和Qt?< /P>的QTest吗?,c++,cppunit,googletest,boost-test,qtestlib,C++,Cppunit,Googletest,Boost Test,Qtestlib,(CPPFUnit、boost测试、google测试等) 优点和缺点是什么? 多谢各位 注意:GUI测试对我们来说不是很重要。QTest是我所知道的唯一用于单元测试UI组件的框架。我们已经使用它取得了一些成功,但是我们坚持使用Boost.Test进行常规单元测试。qtest(直到qt5.7)不提供在uut中预期断言的功能,而Googletest确实有死亡测试的概念,并且可以有一个测试来测试断言。我们发现这在Googletest中很有用,并且暗示它在QtTest中丢失了 根据我的经验,我不能推荐Q

(CPPFUnit、boost测试、google测试等)

优点和缺点是什么? 多谢各位


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

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

qtest(直到qt5.7)不提供在uut中预期断言的功能,而Googletest确实有死亡测试的概念,并且可以有一个测试来测试断言。我们发现这在Googletest中很有用,并且暗示它在QtTest中丢失了

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

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

  • 默认情况下不支持固定装置,您必须在“安装拆卸”中解决此问题
  • QCOMPARE无法比较不同类型的值。例如,比较两个不同比率的
    std::chrono::duration
    是不可能的,尽管它们具有同等的可比性。仅为
    QCOMPARE
Boost简单易用,在大多数情况下都能很好地工作,毫无意外

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

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