2012-08-03 19 views
10

Belki bir şeyleri özlüyorum, ancak QtTest çerçevesi için sağlanan tek öğretinin QString sınıfını test etmene gerçekten çok aptalca geliyor.QtTest Birimi Testi, başka bir projede bulunan başlık dosyalarını nasıl ekleyebilirim?

Ünite testi için tipik kullanım vakası .... kendiniz yazdığınız test sınıflarıdır, ancak derslerde test edilmek üzere farklı bir projede sınıflarınıza nasıl referans gösterileceğine dair bir söz yoktur ve google da beni başarısız oldu (ve gerçekten kopyalayıp yapıştırma derslerinden şüphe etmenin iyi bir yolu olduğunu düşünüyorum.

3 farklı Qt kitaptan QtTest'den söz etmeden bile parmakladım. Sonra sen dahil başlıkları bulmak mümkün olmalıdır

INCLUDEPATH += <directory> 

: ekleyebilir

+0

QtCreator'da projeye sağ tıklamak ve "Varolan dosyaları ekle" yardımcı olmuyor mu? –

+0

#include çalışırken bu dosyaları bulamaz ve evet .pro –

+0

@JohnLotacs HEADERS içindeki HEADERS'a eklenir geçerli projenin üstbilgi dosyaları içindir. 3. tarafın kaynağını dahil etmek vb. Cevabımı aşağıya bakın. – AJG85

cevap

6

böylece sevdiği .pro dosyadaki diğer proje dizinlere yollarını kapsar.

Düzenleme: tamamen başka bir hikaye var

comment

dayanarak. Tanımsız referans, genellikle bir bağımlılığı kaçırdığınız anlamına gelir. Bu genellikle iki şeyden biriyle çözülebilir. Belki daha iyi bir çözüm kitaplık olarak derlemek ve buna bağlayarak yeniden kullanılabilir kod açığa çıkarmaktır

INCLUDEPATH += ../myotherproject/ 
SOURCES = main.cpp ../myotherproject/missingsource.cpp 

:

en basit eksik kaynak dosyasını eklemektir. Örneğin. Windows üzerinde .DLL veya .LIB ve Linux'ta .SO veya .A.

INCLUDEPATH += ../myotherproject/ 
win32:LIBS += ../myotherproject/linkme.lib 

Bize ulaştığınız belirli hataları gösterebilir misiniz?

+0

Çalışmıyor, Qt Creator'ın bu işlevleri otomatik olarak tamamlayabilmesine rağmen (bu, üstbilgileri bulması anlamına geliyor) hataların tümü için "filespull reference ******" hatalarını içeren tüm işlev çağrıları çalışmıyor –

+0

@JohnLotacs See Yukarıdaki düzenleme, bu farklı bir sorun. – AJG85

8

Hem ana uygulama projeniz hem de birim sınama projenizin ihtiyaç duyduğu tüm kaynakları ve başlıkları bir .pri (.pro include) dosyasına koymanızı öneririm. Bu dosyayı ana projeye koyun. Sonra bu dosyayı her iki projeye de ekleyin. Ana projeye yeni bir sınıf ekleyerek her, QtCreator otomatik .pro dosyaya SOURCES += ve HEADERS += satırları ekler, ancak bunları .pri dosyasında olmak istiyorum, bu yüzden elle sonradan taşımak gerektiğini

Not . QtCreator'a onları nereye koyacağını söyleyecek bir çözüm bulunmadığını düşünüyorum.


Ana projesi:

myproject.pro 
myproject.pri 
main.cpp 
someclass.h 
someclass.cpp 

myproject.pro:

QT += ... 
TARGET = ... 
... 

SOURCES += main.cpp  # "private" to this project 
include(myproject.pri) # needed in unit test 

myproject.pri:

SOURCES += someclass.cpp 
HEADERS += someclass.h 

Birim test projesi: unittest

unittest.pro 
main.cpp 
test.h 
test.cpp 

.pro:

QT += ... 
TARGET = ... 
... 

SOURCES += main.cpp test.cpp 
HEADERS += test.h 

# include the classes from the main project: 
INCLUDEPATH += ../myproject/ 
include(../myproject/myproject.pri)