2012-08-03 3 views
10

어쩌면 내가 누락되었지만, QtTest 프레임 워크에 제공된 유일한 자습서가 QString 클래스를 테스트하고 있다는 것은 정말 바보 같습니다.QtTest Unit Testing, 다른 프로젝트에있는 헤더 파일을 추가하는 방법은 무엇입니까?

단위 테스트의 일반적인 사용 사례는 ... 스스로 작성한 테스트 클래스이지만 튜토리얼에서 테스트를 위해 다른 프로젝트에서 클래스를 참조하는 방법에 대한 언급이 없으며 Google에서도 나를 실패했습니다 (복사 붙여 넣기 수업이 좋은 방법이라고 생각합니다.)

심지어 QtTest에 대한 언급이없는 3 가지 Qt 서적을 훑어 보았습니다. 그런 다음 당신이 포함 된 헤더를 찾을 수 있어야합니다

INCLUDEPATH += <directory> 

: 당신은 추가 할 수 있습니다

+0

QtCreator에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 "기존 파일 추가"가 도움이되지 않습니까? –

+0

#include를 시도 할 때 해당 파일을 찾지 못합니다. yes가 .pro –

+0

@ HEners에 추가되었습니다. HEADERS는 현재 프로젝트의 헤더 파일 용입니다. 타사 소스 등을 포함하려면 아래 내 대답을 참조하십시오. – AJG85

답변

6

지금처럼 .PRO 파일에서 다른 프로젝트 디렉토리 경로를 포함한다.

편집 : 완전히 다른 이야기입니다

코멘트

을 바탕으로. 정의되지 않은 참조는 대개 종속성이 누락되었음을 의미합니다. 이것은 대개 두 가지 중 하나로 해결할 수 있습니다. 아마도 더 나은 솔루션 라이브러리로 컴파일과 연결하여 재사용 가능한 코드를 노출하는 것입니다

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

:

간단한 누락 된 소스 파일을 포함하는 것입니다. 예 : Windows에서는 .DLL 또는 .LIB, Linux에서는 .SO 또는 .A.

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

당신이 얻고있는 구체적인 오류를 보여줄 수 있습니까?

+0

Qt Creator가 자동으로 해당 기능을 완료 할 수 있음에도 불구하고 포함 된 파일에 대한 모든 함수 호출이 "정의되지 않은 참조를 ******"이라고합니다. –

+0

@JohnLotacs See 위의 편집, 그건 다른 문제입니다. – AJG85

8

메인 애플리케이션 프로젝트와 유닛 테스트 프로젝트가 필요로하는 모든 소스와 헤더를 하나의 .pri (.pro include) 파일에 넣는 것이 좋습니다. 이 파일을 주 프로젝트에 넣습니다. 그런 다음이 파일을 두 프로젝트에 포함 시키십시오.

주 프로젝트에 새 클래스를 추가 할 때마다 QtCreator는 .pro 파일에 SOURCES +=HEADERS += 행을 자동으로 추가하지만 .pri 파일에 있기를 원하기 때문에 나중에 수동으로 이동해야합니다. . 나는 QtCreator에게 어디에 넣을지에 대한 해결책이 없다고 생각한다.


주요 프로젝트 :

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 

단위 테스트 프로젝트 : 유닛 테스트

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

.프로 :

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

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

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