Qt cmake 项目,包含使用 Qt Test 框架的单元测试

问题描述 投票:0回答:1

我想使用 CMake 设置 Qt 项目。我的主要项目生成一个动态库,为了能够进行单元测试和持续集成,我还希望有一个名为“UnitTests”的子目录来保存使用 Qt Test 框架的单元测试。

所以结构看起来像这样:

  • 我的图书馆项目
    • 单元测试
      • 测试用例_1.cpp
  • 我的班级.h
  • 我的班级.cpp
  • CMakeLists.txt

(抱歉,可视化效果不好,但我不知道如何在这里画树)

我必须解决的问题是 Qt Creator 似乎无法帮助进行设置。所以我环顾四周是否可以使用 Qt 和 Qt Creator 做一些不同的事情。

c++ qt cmake
1个回答
0
投票

我找到了一个可行的解决方案,想与您分享。

无需按照建议创建 Qt Test 项目,只需在主项目中创建一个名为“UnitTests”的新文件夹即可。就我而言,这是 MyLibraryProject。然后,将一个新的测试用例添加到您的项目中,并将其直接放入新文件夹“UnitTests”中。

接下来您需要重新配置 CMakeLists 文件,如下所示:

project(MyLibraryProject LANGUAGES CXX)

set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Test)

add_library(MyLibraryProject SHARED
  # here you add your Sources for the main project
)

target_link_libraries(MyLibraryProject PRIVATE Qt${QT_VERSION_MAJOR}::Core)

# From here on we added things for the test project

enable_testing() # this is used to enable CTest if you want it.

# new executable for the tests
add_executable(UnitTests UnitTests/tst_ApiTest.cpp) 

# adding the test to CTest
add_test(NAME ApiTest COMMAND ApiTest)

# link your library to your test code
target_link_libraries(UnitTests PRIVATE Qt${QT_VERSION_MAJOR}::Test MyLibraryProject)

所以基本上你编辑你的 CMakeLists.txt 文件并为 Qt Test 创建一个新的可执行文件,然后只需要链接到你的库。

这对我来说很有效,我什至可以使用 Qt Creator

© www.soinside.com 2019 - 2024. All rights reserved.