我的项目结构如下所示
- 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测试的规范方法。还是我错过了什么?
1条答案
按热度按时间h6my8fg21#
可以创建一个子目录,在其中创建一个新的CMakeLists.txt并将所有测试放在那里。最后用add_subdirectory将其包含在主项目中。
我离开qt单元测试的同时,我发现,可以在catch2中测试信号和插槽。但我看到上面的解决方案有效。