首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QtTest:防止可执行文件被复制到系统中

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

Stack Overflow用户
提问于 2019-07-11 19:05:41
回答 1查看 70关注 0票数 1

因此,我正在编写一些库,并希望为它设置一个适当的单元测试(比如TDD等等)。从一开始,QtTest框架看起来是合适的。库本身也很好,测试也是如此。

但是当我将库和测试项目添加到我的工作项目中时,CI构建意外地失败了。发生的情况是,正在复制测试可执行文件(LibraryTest.exe或类似的Linux):

  • %QTDIR%/在Windows上的单独文件夹中进行测试
  • 到Linux上的/usr/测试

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

代码语言:javascript
复制
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做错了?提前感谢您的关注。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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构建步骤,并且测试是项目树的一部分,它解释了这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56995826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档