programing tip

GoogleTest에서 특정 테스트 케이스를 실행하는 방법

itbloger 2020. 8. 11. 08:04
반응형

GoogleTest에서 특정 테스트 케이스를 실행하는 방법


내 프로젝트를위한 함수 / 메소드를 작성하려고하는데, 어떤 테스트 케이스를 실행할 것인지 사용자에게 묻습니다. 아래와 같이 보입니다 ...,

Test_Cases_1
         |_TestNo1
         |_TestNo2....so on
Test_Cases_2
         |_TestNo1
         |_TestNo2....so on
....
....so on
Test_Cases_N
         |_TestNo1
         |_TestNo2....so on

이제 문제는 프로젝트를 실행하는 동안 실행하려는 모든 테스트 케이스가 무엇인지 묻는 것입니다. 선택하면 Test_Cases_1Test_Cases_N. 그런 다음이 두 테스트 케이스를 실행하고 다른 모든 테스트 케이스를 Test_Cases_2 to ..... 결과 창에서도 Test_Cases_1의 결과를보고 싶습니다 Test_Cases_N.

따라서 GoogleTest가 표시되면라는 메서드가 있습니다 test_case_to_run_count(). 그러나 모든 것이 test casesTest_F () 메서드로 등록되고 있습니다. 그래서 많은 분석을했지만 여전히 해결책을 찾지 못했습니다. 제발 도와주세요.


고급 옵션사용 하여 Google 테스트를 실행할 수 있습니다 .

일부 단위 테스트 만 실행하려면 --gtest_filter=Test_Cases1*정규식 값으로 명령 줄 옵션을 사용할 수 있습니다 . 나는 그것이 당신의 문제를 해결할 것이라고 생각합니다.

UPD :

문제는 특정 테스트 케이스 실행 하는 방법이었습니다 . gtest를 GUI와 통합하는 것은 또 다른 문제입니다. 접근 방식에 대한 세부 정보를 제공하지 않았기 때문에 설명 할 수 없습니다. 그러나 다음 접근 방식이 좋은 시작이라고 생각합니다.

  1. 테스트를 실행하여 모든 테스트 케이스 가져 오기 --gtest_list_tests
  2. 이 데이터를 GUI로 구문 분석
  3. 실행하려는 테스트 케이스 선택
  4. 옵션으로 테스트 실행 파일 실행 --gtest_filter

@Rasmi Ranjan Nayak 및 @nogard 답변을 요약하고 다른 옵션을 추가합니다.

콘솔에서

다음 --gtest_filter과 같은 플래그를 사용해야합니다.

--gtest_filter=Test_Cases1*

(속성 | 구성 속성 | 디버깅 | 명령 인수에서도이 작업을 수행 할 수 있습니다.)

환경에

다음 GTEST_FILTER과 같이 변수를 설정해야합니다.

export GTEST_FILTER = "Test_Cases1*"

코드에

다음 filter과 같이 플래그를 설정해야합니다.

::testing::GTEST_FLAG(filter) = "Test_Cases1*";

주요 기능은 다음과 같습니다.

int main(int argc, char **argv) {
    ::testing::InitGoogleTest(&argc, argv);
    ::testing::GTEST_FLAG(filter) = "Test_Cases1*";
    return RUN_ALL_TESTS();
}

사용할 수있는 문자열의 구문에 대한 자세한 내용 은 테스트의 하위 집합 실행 섹션을 참조하십시오 .


마침내 나는 ::test::GTEST_FLAG(list_tests) = true;wrt 콘솔이 아닌 프로그램에서 몇 가지 대답을 얻었습니다 .

당신이 사용하려는 경우 --gtest_filter =*; /* =*, =xyz*... etc*/// 당신은 콘솔에서 사용할 필요가있다.

따라서 내 요구 사항은 콘솔이 아닌 프로그램에서 사용하는 것입니다.

Updated:-

마침내 나는 프로그램에서 같은 것을 업데이트하는 것에 대한 답을 얻었습니다.

 ::testing::GTEST_FLAG(filter) = "*Counter*:*IsPrime*:*ListenersTest.DoesNotLeak*";//":-:*Counter*";
      InitGoogleTest(&argc, argv);
RUN_ALL_TEST();

그래서 모든 답변에 감사드립니다.

당신은 훌륭합니다.

참고 URL : https://stackoverflow.com/questions/12076072/how-to-run-specific-test-cases-in-googletest

반응형