QtTest:防止可执行文件被复制到系统



所以,我正在编写一些库,并打算对其进行适当的单元测试(如TDD等)。QtTest框架看起来很适合开始。库本身很好,测试也很好。

但是,当我将库和测试项目都添加到我的作业项目中时,CI 构建出人意料地失败了。正在复制测试可执行文件(LibraryTest.exe或Linux上的类似可执行文件):

  • 到 %QTDIR%/tests 在 Windows 上的单独文件夹中
  • 在 Linux 上到/usr/tests

我的测试项目设置将此行为添加到"安装"构建阶段,它们是(重要的):

QT += core testlib
# The problem is below
CONFIG += c++11 qt warn_on depend_includepath #testcase
CONFIG -= app_bundle
LIBS *= -L$$PWD -lmylibrary # not exact, does not matter
TARGET = LibraryTest
SOURCES += 
tst_my_library_test.cpp
DEFINES *= QT_FORCE_ASSERTS
DESTDIR = $$PWD/bin

如您所见,注释掉CONFIG += testcase后,可执行文件不再复制到某个地方。我读到这个配置选项用于自动测试,看起来很有用,但没有写任何关于任何特殊安装阶段的文章。测试可执行文件存在于DESTDIR中很好,所以它不是什么意外错误。

我的问题是:为什么会这样?我可以指定其他文件夹吗? 自动化是有用的,但即使实现它也可能绑定到一些更方便的目录。

我煮QtTest是不是做错了?提前感谢您的关注。

好吧,在以我自己的方式破解测试并有足够的时间彻底研究问题之后,Qt的测试被设计成以与我想象的完全不同的方式使用。

很明显,测试用例的 makefile 与常规文件不同,但官方文档只是陈述了以下内容:

对于测试用例项目,qmake 会在生成的 Makefile 中插入一个检查目标。此目标将运行应用程序。如果测试以等于零的退出代码终止,则认为测试通过。

这给出了一个提示,究竟是什么导致makefile具有奇怪和错误的文件复制的额外install_target: first FORCE,但没有更深入地解释这种行为。

经过一番修改后,我在这里找到了以下内容:

另请注意,Qt测试仅使用非安装Qt(上面的前缀$PWD选项)进行了测试。测试项目文件将覆盖 make 安装目标,因此它们不可安装。如果Qt不在安装路径上,它根本不起作用。

就我的项目大量使用install构建步骤而言,测试是项目树的一部分,它解释了这个问题。

相关内容

  • 没有找到相关文章

最新更新