반응형

[googletest] gtest_main.cc를 라이브러리에 포함시키기

 

아래 링크에서 main 함수를 넣었는데, main 함수에서 동작이 고정되어 있다면, googletest에서 제공하는 gtest_main.cc의 main 함수를 이용할 수 있습니다. 이 gtest_main.cc의 main 함수를 library에 포함시켜서, 유닛 테스트 코드에서의 main은 사용하지 않도록 해보겠습니다. 

 

https://zidarn87.tistory.com/617

 

[googletest] googletest 다운로드 및 간단한 유닛 테스트 케이스 수행하기 - 리눅스 용

[googletest] googletest 설치 및 간단한 테스트케이스 수행하기 리눅스 우분투 20.04 버전에서 googletest 코드를 다운로드하고, googletest 코드로 정적 library를 만든 다음, 이 library를 가지고 간단한 테스트

zidarn87.tistory.com

 

기존 코드 - 유닛 테스트 코드에 main 함수를 구현함

아래 main 함수를 보면 gtest 라이브러리를 초기화하는 부분과 모든 단위 테스트를 수행하는 명령이 있습니다. 

이 부분은 항상 고정으로 사용한다면 gtest_main.cc의 main 함수를 이용하면 됩니다.

#include <gtest/gtest.h>

TEST(Sample, Test1){

}

TEST(Sample, Test2){
  FAIL();
}

int main(int argc, char** argv){

    testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

gtest_main.cc를 라이브러리화

우선 아래 명령어를 이용하여 gtest_main.cc를 빌드합니다. 

g++ googletest-1.13.0/googletest/src/gtest_main.cc -c -I ./googletest-1.13.0/googletest/include/

빌드하면 gteste_main.o 파일이 생성되는 것을 볼 수 있습니다.

gtest-all.o와 gtest_main.o 를 library에 포함시킵니다. 

ar rcv libgtest.a gtest-all.o gtest_main.o

 

유닛 테스크 코드의 main 함수를 제거하고 빌드하기

아래와 같이 main 함수를 제거하고, 테스트 케이스 코드만 작성합니다.

#include <gtest/gtest.h>

TEST(Sample, Test1){

}

TEST(Sample, Test2){
  FAIL();
}

빌드하고, 실행해봅니다. 

빌드도 잘 수행되었고, 테스트 케이스도 잘 수행된 것을 볼 수 있습니다.

반응형

+ Recent posts