C++ & Qt 应用程序的测试过程

Posted

技术标签:

【中文标题】C++ & Qt 应用程序的测试过程【英文标题】:Testing Process of a C++ & Qt Application 【发布时间】:2011-03-29 19:23:19 【问题描述】:

我是一个主要用 Qt 编写的大型(有点……)C++ 应用程序的一部分。 我想知道这是否是正确/常见的方法: 每当我对某个/几个源文件进行更改时,我都会在调试模式下编译它(QtCreator),然后启动并测试它。 问题是,每次编译都需要几分钟(通常是 1 - 3 分钟),我讨厌这样,而且我想我在这里做错了,也许为每个小改动编译整个项目并不是正确的路径去吗?

谢谢,

【问题讨论】:

如果你使用 g++ 为什么不使用-c 选项来编译部分文件? @Acme QtCreator 在两阶段编译中使用 mingw,但他也许可以将其添加到项目设置的 qmake 步骤中 【参考方案1】:

尽量使用 QTest 的单元测试,然后你可以先验证部分,然后在完整的应用程序上进行一些测试。这可以节省大量时间,如果操作正确,还可以帮助生成更健壮的代码。

这确实需要某种模块化方法,因此需要以某种方式对代码进行分组。

【讨论】:

这对于自动化测试来说非常有用,但如果他担心几分钟的构建时间,我怀疑他是否有时间正确实施 QTestLib ... +1 不过 我使用 QTest 作为我开发的一部分,因此我不必经常重建整个应用程序。所以我花在编译上的总时间变短了……所以这只能间接帮助。【参考方案2】:

您很可能需要调整您的构建设置,以确保您进行最少的重建或增量构建,其中它只编译已更改的文件,而不更新或重建任何不受更改直接影响的文件。当您要更改在整个项目中大量包含但布局合理的项目不应该发生的头文件时,这仍然无济于事。

一般来说,有几种方法可以随时进行测试,但我推荐的主要有两点:

    不要重新构建整个项目(不清理,不重新构建所有项目),只需进行增量构建并随时进行测试。非常适合在不需要链接一百万件事情或需要长时间启动的项目中测试 gui 更改和小事情。 使用控制台应用程序或简单的测试应用程序将其开发为单独的项目,这些应用程序未包含在最终集成版本中,但可以保留用于以后的独立测试。这对于诸如您正在制作新的加密算法或文件管理器以替换较大项目的一些旧的过时部分的库来说更好。

当然,总有一种方法是像疯子一样充满自信地编码,在编译和运行时交叉手指,这种方法很流行,但效果不那么好。

【讨论】:

【参考方案3】:

您的项目中有多个 SUBDIRS 目标吗?如果答案是肯定的,您可以尝试通过首先从项目文件中删除所有“有序”关键字来调整项目文件,然后如果一个子目录依赖于另一个子目录,则将它们声明为依赖项。最后,确保将 -jX 值传递给 make(也就是说,如果您的构建规则使用 make),以便在编译时使用所有 cpu 内核。

【讨论】:

【参考方案4】:

也回答于:Qt automated testing

我和我的团队最近开发了 TUG,这是一个用于 Qt GUI 单元测试的开源框架。是使用 Qt 测试。也许它可以帮助你。

一个胜过千言万语的视频: https://www.youtube.com/watch?v=tUis6JrycrA

希望我们可以一起做得更好。 Github 仓库:http://pedromateo.github.io/tug_qt_unit_testing_fw/

【讨论】:

以上是关于C++ & Qt 应用程序的测试过程的主要内容,如果未能解决你的问题,请参考以下文章

STL标准库 & 范型编程学习笔记:容器的结构分类测试

STL标准库 & 范型编程学习笔记:容器的结构分类测试

STL标准库 & 范型编程学习笔记:分配器之测试

STL标准库 & 范型编程学习笔记:分配器之测试

Qt 集成 Lua

Qt内存使用情况检查