我有一个相当大的Qt GUI项目,不幸的是,它缺少适当的单元测试。
我打算为每个课程建立一个带有测试源文件的测试项目。
我浏览了很多Qt的官方文档,但是还存在一些问题:
任何指向涵盖较大Qt项目的提示测试的教程的指针都将受到高度赞赏。
我没有很多时间在Qt中进行完善的单元测试。但是,我确实弄清楚了如何使主管道正常工作。我希望这可以为您提供帮助,尽管您可能会比学习《写作单元测试》指南做得更好。
如何创建测试套件?似乎所有文档和教程仅涵盖编写一项测试,但是如何有效捆绑单元测试?
您可以通过将单元测试(对象上的插槽)收集到对象中并组成这些对象来组织“套件”。
test_example.pro
TARGET = test_example
TEMPLATE = app
CONFIG += testcase
QT += testlib core
... INCLUDEPATH, SOURCES, HEADERS, etc...
main.cpp
#include <QtTest/QtTest>
#include "MainTest.h"
// This macro introduces an event loop
QTEST_MAIN(MainTest)
主测试
class MainTest : public QObject
{
Q_OBJECT
private slots:
// Each slot is a unit test
void init()
{
}
// Create a "test suite" by bundling tests into objects
void runFirstSuite()
{
FirstSuiteUiTest first;
first.test(); // runs 10 tests
FirstSuiteIoTest second;
second.test(); // runs 999 tests
...
}
void SecondSuite()
{
QFAIL("This suite is not really a suite, and it always fails");
}
};
您还可以将测试组织到物理文件结构中。我使用subdirs项目作为根.pro文件,因此可以构建构件(动态和静态档案,二进制文件)并运行许多单元测试集合。
TEMPLATE = subdirs
CONFIG += ordered
SUBDIRS += src/core
SUBDIRS += src/some_dll
SUBDIRS += src/test/awesome_core_test_1 #Holds many suites
SUBDIRS += src/test/awesome_core_test_2 #Holds many other suites!
core.depends = core
awesome_core_test_1.depends = core
awesome_core_test_2.depends = core
因此,通过将单元测试组织到对象组成和物理文件中,您可以实现某种粒度的组织。可能有更好的方法或不同的方法,但是我不确定。
如何将测试执行集成到Qt Creator中?也许在构建后的步骤中运行测试会很有趣?
添加CONFIG += testcase
到您的.pro文件中。这将创建一个构建目标。通过运行来调用构建和测试make check
我应该将所有正常的源文件添加到测试项目中还是可以创建静态库?
就像在其他任何项目中一样,您都可以这样做。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句