본문 바로가기
GTEST

[GTEST] GTEST(Google Test) 실행 플래그 옵션을 소스 코드에 안에서 설정하기

by Junk_Seo 2023. 11. 24.
반응형

1. GTEST(Google Test) 실행 플래그 옵션

 

[GTEST] GTEST(Google Test) 명령 인수를 사용한 실행 플래그 옵션 정보

1. GTEST(Google Test) 실행 플래그 옵션 GTEST 사용 시 기본적으로 제공해주는 플래그 옵션 사용에 대하여 정리합니다. 2. 프로그램 명령 인수를 사용한 실행 옵션 정보 GTEST는 main() 함수의 명령 인수에

junk-s.tistory.com

2. 소스 코드 안에서 실행 플래그 설정 방법

  • 명령 인수가 아닌 소스 코드 안에서 플래그를 설정할 수 있습니다.
  • ::testing::GTEST_FLAG()를 사용합니다.
  • gtest.h 헤더 파일에 사용 가능한 옵션이 정의되어 있습니다.

3. GTEST 소스 코드 안에서 실행 플래그 옵션 설정

3.1. ::testing::GTEST_FLAG(list_tests)

  • 테스트를 수행할 목록 리스트를 출력합니다.
  • 테스트를 수행하지 않습니다.
    • 소스 코드
      int main(int argc, char **argv)
      {
          g_Env = new CEnvironment();
           
          ::testing::GTEST_FLAG(list_tests) = true;   // true 면 수행 목록 출력, false면 동작 안함
       
          ::testing::InitGoogleTest(&argc, argv);
          ::testing::AddGlobalTestEnvironment(g_Env);
       
          return RUN_ALL_TESTS();
      }​
    • 수행 결과

3.2. ::testing::GTEST_FLAG(filter)

  • [테스트 케이스 이름].[테스트 이름]을 입력하면 해당 테스트만 수행한다.
  • 앞에 "-"를 붙이면 해당 테스트를 수행하지 않는다.
  • 이름 대신 와일드카드(*,?)를 사용할 수 있다.
    • 소스 코드
      int main(int argc, char **argv)
      {
          char szFilter[] = "DIV*";
          g_Env = new CEnvironment();
         
          ::testing::GTEST_FLAG(filter) = szFilter;
           
          ::testing::InitGoogleTest(&argc, argv);
          ::testing::AddGlobalTestEnvironment(g_Env);
       
          return RUN_ALL_TESTS();
      }​
    • 수행 결과

3.3. ::testing::GTEST_FLAG(also_run_disabled_tests)

  • DISABLED_ 로 실행을 막아둔 테스트 실행 여부를 설정합니다.
    • 소스 코드
      int main(int argc, char **argv)
      {
          g_Env = new CEnvironment();
         
          ::testing::GTEST_FLAG(also_run_disabled_tests) = true;  //flase 면 disabled 된 테스트 케이스 수행 안함
           
          ::testing::InitGoogleTest(&argc, argv);
          ::testing::AddGlobalTestEnvironment(g_Env);
       
          return RUN_ALL_TESTS();
      }​
    • 수행 결과

3.4. ::testing::GTEST_FLAG(repeat)

  • 에러 확률이 낮은 경우 여러 번 반복하여 테스트를 수행해야 되는데, 이 경우에 사용합니다.
  • COUNT로 입력한 횟수만큼 테스트를 반복합니다.
    • 소스 코드
      int main(int argc, char **argv)
      {
          char szFilter[] = "DIV*";
          g_Env = new CEnvironment();
         
          ::testing::GTEST_FLAG(repeat) = 2;  // 2번 반복
           
          ::testing::InitGoogleTest(&argc, argv);
          ::testing::AddGlobalTestEnvironment(g_Env);
       
          return RUN_ALL_TESTS();
      }​
    • 수행 결과

3.5. ::testing::GTEST_FLAG(shuffle), ::testing::GTEST_FLAG(random_seed)

  • 프로그램에서 임의의 순서로  테스트를 실행할 때 사용합니다.
  • 현재 시간에서 계산된 임의의 시드를 사용합니다.
  • 랜덤 시드를 명시적으로 지정하려면 --gtest_random_seed=[NUMBER]를 사용합니다. (NUMBER는 0~99999)
    • 소스 코드
      int main(int argc, char **argv)
      {
          char szFilter[] = "DIV*";
          g_Env = new CEnvironment();
         
          ::testing::GTEST_FLAG(shuffle) = true;  // false면 셔플 사용 X
          ::testing::GTEST_FLAG(random_seed) = 2; // seed 2 사용
           
          ::testing::InitGoogleTest(&argc, argv);
          ::testing::AddGlobalTestEnvironment(g_Env);
       
          return RUN_ALL_TESTS();
      }​
    • 수행 결과

3.6. ::testing::GTEST_FLAG(color)

  • 터미널 출력의 컬러를 설정합니다.
  • 기본 값은 auto입니다.
  • auto에서 비 Window 플랫폼에서는 TERM 환경 변수에 xterm 또는 xterm-color가 설정된 경우 색상을 출력합니다.
    • 소스 코드
      int main(int argc, char **argv)
      {
          char szFilter[] = "DIV*";
          g_Env = new CEnvironment();
         
          ::testing::GTEST_FLAG(color) = "no"; //yes : 컬러 사용, no : 컬러 사용 x, auto : 자동
           
          ::testing::InitGoogleTest(&argc, argv);
          ::testing::AddGlobalTestEnvironment(g_Env);
       
          return RUN_ALL_TESTS();
      }​
    • 수행 결과

3.7. ::testing::GTEST_FLAG(print_time)

  • gtest는 기본값으로 테스트의 수행 시간을 출력하는데, 해당 옵션을 사용하면 수행 시간을 출력하지 않습니다.
    • 소스 코드
      int main(int argc, char **argv)
      {
          char szFilter[] = "DIV*";
          g_Env = new CEnvironment();
         
          ::testing::GTEST_FLAG(print_time) = false;  // true : 수행시간 출력, false : 수행시간 출력 X
           
          ::testing::InitGoogleTest(&argc, argv);
          ::testing::AddGlobalTestEnvironment(g_Env);
       
          return RUN_ALL_TESTS();
      }​
    • 수행 결과

3.8. ::testing::GTEST_FLAG(output)

  • 프로그램 수행 결과에 대한 보고서를 XML 형태로 저장합니다.
  • 생성하려는 경로에 동일한 파일이 존재하면 덮어쓰지 않도록 파일 이름에 시퀀스를 추가합니다.
    • 소스 코드
      int main(int argc, char **argv)
      {
          char szFilter[] = "DIV*";
          g_Env = new CEnvironment();
         
          ::testing::GTEST_FLAG(output) = "xml:./";
           
          ::testing::InitGoogleTest(&argc, argv);
          ::testing::AddGlobalTestEnvironment(g_Env);
       
          return RUN_ALL_TESTS();
      }​
    • 수행 결과

4. 참고

 

GoogleTest User’s Guide

GoogleTest - Google Testing and Mocking Framework

google.github.io

 

반응형