簡體   English   中英

如何為 Qt 項目編寫 Qt 測試

[英]How to write Qt test for a Qt project

我已經閱讀了QT-test 網站上的 5 個教程。 但它們不是我想要的。 我想構建一個項目,它的單元測試部分與主程序分離。

例如:在主程序中,小部件上有一個按鈕,如果單擊它,則 Qlabel 將顯示一個數字。 如果我運行測試程序,它會在該按鈕上模擬 MouseClicked 事件,然后驗證 Qlabel 上顯示的值是否符合我們的預期。

我的問題是如何將我的測試程序鏈接到主程序以便我可以訪問其成員? 除此之外,我想使用CMake構建項目,我應該如何為測試項目編寫CMakeLists?

---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)

我也很困惑如何在我們的測試中從主窗口訪問成員。 我的意思是我不能包含 ui_mainwindow.h 並創建一個 UI_Mainwindow 實例

我找到了一種可以回答我的問題的方法。

在測試部分,我可以使用findchild<T>("WidgetsName")來訪問任何 class 的 ui 成員。

參考: 如何在 Qt 中獲取小部件的子項?

這可能不是一個通用的解決方案,如果有人有更好的主意,我將不勝感激。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM