2011-01-20 29 views
14

क्या कोई मुझे कुछ क्यूटी टेस्ट कोड और सीएमके लिस्ट.txt का उदाहरण दे सकता है जो सीएमके के साथ बना है और सीटीएस्ट के साथ भाग गया है। मुझे कोई नहीं लगता है!सीएमके के साथ क्यूटी टेस्ट बनाएं

-Kurtis

उत्तर

10

Charm (टेस्ट/CMakeLists.txt) से लिए गए एक उदाहरण:

SET(TestApplication_SRCS TestApplication.cpp) 
SET(TEST_LIBRARIES CharmCore ${QT_QTTEST_LIBRARY} ${QT_LIBRARIES}) 

SET(SqLiteStorageTests_SRCS SqLiteStorageTests.cpp) 
QT4_AUTOMOC(${SqLiteStorageTests_SRCS}) 
ADD_EXECUTABLE(SqLiteStorageTests ${SqLiteStorageTests_SRCS}) 
TARGET_LINK_LIBRARIES(SqLiteStorageTests ${TEST_LIBRARIES}) 
ADD_TEST(NAME SqLiteStorageTests COMMAND SqLiteStorageTests) 

एक सामान्य निष्पादन को फर्क सिर्फ इतना है कि आप ADD_TEST मैक्रो कहते हैं। उदा। देखें कार्रवाई में इसे देखने के लिए आकर्षण।

+0

बिल्कुल सही। बहुत बढ़िया। बहुत बहुत धन्यवाद। –

+2

उम्मीद है कि यह किसी और समय सड़क के नीचे बचाएगा - [इस पृष्ठ] के अनुसार (http://qt-project.org/wiki/Writing_Unit_Tests): "ध्यान दें कि सीएमकेक एक moc के साथ qtest फ़ाइलों को संभाल नहीं सकता है तल।" –

+0

यदि ऐसा है, तो आपको अपनी टेस्ट फाइलों को स्वचालित रूप से याद रखना होगा। Qt5 के साथ उपयोग के लिए – jackyalcine

22

यहां cmake 2.8.11 और Qt5.2 का उपयोग करने का एक उदाहरण दिया गया है। ध्यान दें कि सेमेक अब नीचे .moc-include के साथ testfiles का समर्थन करता है।

CMakeLists.txt:

cmake_minimum_required(VERSION 2.8.11) 
project(foo) 

enable_testing() 

# Tell CMake to run moc when necessary: 
set(CMAKE_AUTOMOC ON) 

# As moc files are generated in the binary dir, tell CMake 
# to always look for includes there: 
set(CMAKE_INCLUDE_CURRENT_DIR ON) 

find_package(Qt5Test REQUIRED) 

add_executable(foo foo.cpp) 
add_test(foo foo) 

target_link_libraries(foo Qt5::Test) 

foo.cpp:

#include <QTest> 

class Foo : public QObject { 
    Q_OBJECT 
private slots: 
    void t1() { QVERIFY(true); } 
}; 

QTEST_MAIN(Foo) 
#include "foo.moc" 
+1

+1। –

+0

मुझे कोड संकलित करने के लिए सीएमकेलिस्ट की अंतिम पंक्ति को संपादित करना था: target_link_libraries (foo Qt5 :: विजेट Qt5 :: टेस्ट)। Qt5 के लिए +1। मुझे यकीन नहीं है कि यह मेरा है, या वास्तव में एक त्रुटि है, इसलिए मैं जवाब संपादित नहीं कर रहा हूं। – cauchy

+0

@cauchy: ठीक है, निश्चित रूप से यदि आपके परीक्षण को QtWidgets की आवश्यकता है, तो इसे लिंक करने की आवश्यकता है ...: पी – Smar