如何在QtCreator中对Qt Test cmake目标进行分组?

oprakyz7  于 2023-05-17  发布在  其他
关注(0)|答案(1)|浏览(102)

我的项目结构如下所示

- application
   - main.cpp
   - something.h
   - something.cpp
   - something_else.h
 - unit_tests
   - test_something.cpp
   - test_something_else.cpp
 - CMakeLists.txt

到目前为止,我一直在使用Catch 2进行测试,我有两个很好的项目,一个用于应用程序,一个用于测试。但是现在也有一些基于信号和插槽的类需要测试,而使用Qt Test更容易。所以我现在换了。

我的CMakeFile如下:

cmake_minimum_required(VERSION 3.21)
project(application_name LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
find_package(Qt6 REQUIRED COMPONENTS Core)
find_package(Qt6 REQUIRED COMPONENTS Test)
enable_testing(true)
add_executable(application_name application/main.cpp application/something.h ...)
target_link_libraries(application_name PRIVATE Qt::Core)

enable_testing(true)

add_executable(test_something unittests/test_something.cpp)
add_test(NAME test_something COMMAND test_something)
target_link_libraries(test_something PUBLIC Qt::Test)

add_executable(test_something_else unittests/test_something_else.cpp)
add_test(NAME test_something_else COMMAND test_something_else)
target_link_libraries(test_something_else PUBLIC Qt::Test)

这工作,我可以运行测试形式QtCreator,在测试窗格或手动通过构建->运行.

让我烦恼的是以下几点:

1.每个单元测试在项目视图中都显示为一个单独的项目,其中包含一个文件。
1.运行配置编辑器还显示每个测试。
我的实际项目有几个非qt测试的目标,所以额外的目标会把这两个窗格弄得乱七八糟。
我希望在项目视图中对测试进行分组,最好是在运行配置视图中。这可能吗?对我来说,把所有的测试放在一个项目中是理想的,但这似乎不是Qt测试的规范方法。还是我错过了什么?

h6my8fg2

h6my8fg21#

可以创建一个子目录,在其中创建一个新的CMakeLists.txt并将所有测试放在那里。最后用add_subdirectory将其包含在主项目中。
我离开qt单元测试的同时,我发现,可以在catch2中测试信号和插槽。但我看到上面的解决方案有效。

相关问题