因此,我正在编写一些库,并希望为它设置一个适当的单元测试(比如TDD等等)。从一开始,QtTest框架看起来是合适的。库本身也很好,测试也是如此。
但是当我将库和测试项目添加到我的工作项目中时,CI构建意外地失败了。发生的情况是,正在复制测试可执行文件(LibraryTest.exe或类似的Linux):
我的测试项目设置将此行为添加到“安装”构建阶段,它们是(重要的):
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做错了?提前感谢您的关注。
发布于 2019-09-16 13:47:43
好吧,在以我自己的方式侵入测试并获得足够的时间彻底研究这个问题之后,它想到Qt的测试被设计成一种与我想象的完全不同的方式。
很明显,测试用例的makefile不同于普通的makefile,但是正式文件只是说明了以下几点:
对于testcase项目,qmake将在生成的Makefile中插入一个check目标。此目标将运行应用程序。如果该测试以等于零的退出代码终止,则认为该测试已通过。
这给了一个提示,到底是什么导致makefile有额外的install_target: first FORCE和奇怪的和错误的文件复制,但并没有解释的行为更深。
在更多的说教之后,我发现了下面的这里
还要注意的是,Qt测试只通过一个未安装的Qt (上面的-prefix $PWD选项)进行测试。测试项目文件覆盖make目标,因此它们是不可安装的。如果Qt不在安装路径上,它就根本无法工作。
至于我的项目使用了大量的install构建步骤,并且测试是项目树的一部分,它解释了这个问题。
https://stackoverflow.com/questions/56995826
复制相似问题