首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Qt自动测试只有在“重建”之后才有效,而不是在“构建”之后才有效。

Qt自动测试只有在“重建”之后才有效,而不是在“构建”之后才有效。
EN

Stack Overflow用户
提问于 2021-01-11 14:43:20
回答 1查看 118关注 0票数 0

我在我的C++ Qt项目中添加了一个自动测试项目(QT5.15.1,MSVC2019,主机和目标: Windows 10)。但是,只有当我重新构建和运行测试项目时,测试源文件中的更改才会生效,而并不是如果我只是构建并运行,这通常对我的主应用程序项目很好。

我想我错过了测试项目的.pro文件中的一个重要设置。

,谁能告诉我我错过了什么吗?

详细信息

我有以下的项目结构

代码语言:javascript
运行
复制
/project
 |- project.pro                 -- template = subdirs
 |- /app
 |   |- app.pro                 -- template = app
 |   |- main.cpp
 |   \- mainwindow and source files
 \- /tests
     |- tests.pro               -- template = subdirs
     \- /unittests
         |- unittests.pro       -- template = subdirs
         \- /objectXTest
             |- objectXTest.pro -- template = app
             |- tst_objectXTest.cpp
             \- tst_objectXTest.h

我的objectXTest.pro文件在哪里

代码语言:javascript
运行
复制
QT += testlib
QT -= gui

SRC_DIR = ../../../app
INCLUDEPATH += \
    $${SRC_DIR} \                    # common/global project root headers
    $${SRC_DIR}/path/to/objectX      # headers relative to unit's source directory

CONFIG += qt console warn_on depend_includepath testcase
CONFIG -= app_bundle

TEMPLATE = app

SOURCES += \
    tst_objectXTest.cpp \
    $${SRC_DIR}/path/to/objectX/objectX.cpp

HEADERS += \
    tst_objectXTest.h

我的测试来源是

代码语言:javascript
运行
复制
// tst_objectXTest.h
#ifndef TST_OBJECTXTEST_H
#define TST_OBJECTXTEST_H

#include <QtTest>

// add necessary includes here
#include "objectX.h"

class ObjectXTest : public QObject {
    Q_OBJECT

public:
    ObjectXTest () {}
    ~ObjectXTest () {}

private slots:
    void initTestCase();
    void cleanupTestCase();

    void test_construction();
};

#endif // TST_OBJECTXTEST_H

代码语言:javascript
运行
复制
// tst_objectXTest.cpp
#include "tst_objectXTest.h"

void ObjectXTest::initTestCase() { }
void ObjectXTest::cleanupTestCase() { }

void ObjectXTest::test_construction() {
    auto p_ox = new ObjectX();
    QWARN("some message");
    delete p_ox;
}

QTEST_APPLESS_MAIN(ObjectXTest)

我尝试在上面的QWARN中更改消息,但是重新执行总是会打印上次重新构建测试项目时的文本。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-12 08:13:23

我自己解决了这个问题,通过以下步骤(在进行了上述更改之后):

删除项目根directory

  • re-open中的
  1. 关闭Qt
  2. 项目Qt Creator
  3. (probably中的项目(这不是必要的)在project.pro

上执行qmake

现在,一个简单的构建确实会将构建目录中的文件部分更新到我的更改中,并且更改会立即生效。

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

https://stackoverflow.com/questions/65668961

复制
相关文章

相似问题

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