我看过QT-test website的5教程,但它们不是我想要的,我想建立一个项目,它的单元测试部分与主程序分离。
例如:在主程序中,小部件上有一个按钮,如果点击它,则Qlabel将显示一个数字。如果我运行测试程序,它将模拟该按钮上的MouseClicked事件,然后验证Qlabel上显示的值是否符合我们的预期。
我的问题是如何将测试程序链接到主程序以便访问其成员?除此之外,我想使用CMake构建项目,我应该如何为测试项目编写CMakeList?
---root
|---test
|----CmakeLists.txt
|----test.cpp
|----test.h
|---build
|----main.cpp // only int main function
|----QMainwindows.cpp
|----QMainwindows.h
|----QMainwindows.ui
|----CmakeLists.txt
根目录下的CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
project(myproject VERSION 0.1 LANGUAGES CXX)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
set(PROJECT_SOURCES
main.cpp
QMainwindows.cpp
QMainwindows.h
QMainwindows.ui
)
add_executable(myproject ${PROJECT_SOURCES})
target_link_libraries(myprojectPRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
我也很困惑在我们的测试中如何从mainwindow访问成员。我的意思是我不能包含ui_mainwindow. h并创建UI_Mainwindow示例
1条答案
按热度按时间11dmarpk1#
我找到了一种方法来回答我的问题。
在测试部分,我可以使用
findchild<T>("WidgetsName")
来访问任何类的ui成员。参考:How do you get a widget's children in Qt?
这可能不是一个普遍的解决办法,如果有人有更好的主意,我将不胜感激。