2017-01-26 6 views
1

내 C++ 프로젝트에서 단위 테스트를 처음 사용하고 싶습니다. 그러므로 필자는 테스트를 작성할 기존 클래스가 많이 있습니다 (적어도 일부는 테스트를 작성했습니다). 또한, 응용 프로그램은 물론 main() 기능을 가지고 있습니다.단위 테스트 (googletest) 및 프로젝트/폴더/파일에 대한 혼란

저는 qmake와 함께 qt creator를 사용하고 있지만 cmake로 전환 할 수도 있습니다. 프로젝트, qt 작성자 및 qmake는 잘 작동합니다.

내 혼란은 이제 단위 테스트를 어떻게 추가합니까? googletest를 사용하려고합니다. 나는 이미 새로운 프로젝트에서 하나의 파일 (함수, 테스트 및 메인)의 모든 것과 함께 더미 add(int, int) 함수를 테스트하는 테스트를 수행했다. 그것은 기존 프로젝트 (자체는 main())와 어떻게 작동합니까? 두 번째 프로젝트를 설정하고 헤더를 테스트 파일에 포함시켜야합니까? 그것을위한 좋은 폴더 구조는 무엇입니까? 제 생각에는

+1

간단한 방법 중 하나는 라이브러리를 만드는 것인데, 응용 프로그램에는 "메인"만 있고, lib의 클래스/기능을 정상적으로 호출합니다. 그런 다음 테스트 응용 프로그램은 lib에 링크하여 해당 구성 요소를 테스트 할 수 있습니다. (총 3 개의 프로젝트 : MyLib, MyApp, MyTest). – Jarod42

+1

테스트가 두 번째 프로젝트에있는 것이 가장 좋습니다. [이 프로젝트] (https://github.com/nholthaus/units) (저는 저자입니다)는 CMake를 통해 통합 된 gtest를 가지고 있습니다. 실제로 CMake 파일을 복사하여 붙여 넣기하면 폴더 구조의 예. –

답변

2

는 가장 좋은 방법은, (모든 제품 코드)를 모델 라이브러리을 만들기 위해 프로그램 실행테스트 실행입니다. 그런 다음 모든 프로덕션 코드를 프로그램 및 테스트 실행 파일에 연결할 수 있습니다. 테스트 파일은 테스트 실행 파일에도 저장됩니다. 파일 시스템에

model.lib (link against both exe) 
program.exe 
modelTest.exe 

콘크리트 폴더에서 테스트 - 생산 - 파일을 저장할 수 있습니다 : 내 모든 프로젝트는이 구조를 가지고있다. 빌드 도구 (cmake와 같은)는 파일을 분리하고 테스트 파일을 테스트 실행 파일에 넣고 프로덕션 파일을 모델 라이브러리에 넣어야합니다.

는 다음과 같은 예를 생각해 보면 구글과 같은 테스트 프레임 워크를 사용하는 경우

cmake_minimum_required(VERSION 2.8) 
project(TheUltimateProject) 
ADD_EXECUTABLE(program main.cpp) 
ADD_library(model shared model.cpp model.h) 
ADD_EXECUTABLE(modelTest modelTest.cpp) 

target_link_libraries(program model) 
target_link_libraries(modelTest model) 

을 :

src (folder) 
- main.cpp 
- model.h 
- model.cpp 
- modelTest.cpp 

cmake 파일은 다음과 같이 수 : 나는 다음과 같은 파일이있는 폴더가 테스트에서 gmock에 대한 modelTest 실행 파일을 링크해야하고 include 폴더를 추가하는 것을 잊지 마세요.

예 :