簡體   English   中英

在項目中使用QT單元測試-主要(…)功能沖突

[英]Using QT Unit Tests in a project - conflicting main(…) functions

我邁出了使用單元測試開發應用程序的崇高道路上的第一步,但事實證明這是一個艱難而艱難的過程。 我正在Qt中開發應用程序,因此可以考慮使用其QTestLib框架。 現在,我了解了如何進行單元測試,但是似乎無法弄清楚如何將單元測試合並到項目中。 假設我有一個控制台應用程序,它只有一個main.cpp以及一個我要開發的類的cpp和h文件,例如MyClass。 我想正確的做法是使用h和cpp文件創建相應的測試類MyClassTest。 但是我應該把它放在同一個項目中嗎? 還是只為單元測試創​​建一個單獨的項目,該項目就可以訪問“主”項目中的文件(不確定該怎么做)?

如果主應用程序和測試都在同一個項目中,那么如何在不運行應用程序的情況下運行測試,反之亦然? 我嘗試將Qt教程1中有關單元測試的文件合並到控制台項目中,但是問題在於它們使用了宏QTEST_MAIN(TestQString) ,該宏擴展為main(...)函數。 這會導致與main.cpp中的main(...)發生沖突。 好了,我可以重命名任何一個,但是問題仍然存在-我該如何運行測試或應用程序本身? 如果我重寫QTEST_MAIN宏(無論如何這是一個壞主意),我將禁用測試。 如果我在main.cpp中重命名main(...)函數,則實際的應用程序將永遠不會執行。 我猜應該有一種方法可以為該項目創建兩個獨立的可執行文件,一個正在運行單元測試,另一個正在運行該應用程序,但無法弄清楚該如何做。

絕對為您的測試創建一個單獨的項目。 如果將應用程序項目和測試項目排列在並排目錄中,則應該能夠使用test.pro文件中的相對路徑來引用應用程序項目中的代碼單元。

我使用此博客上介紹的非常方便的測試運行程序。

暫無
暫無

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

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