내 프로젝트에 대한 함수 / 메서드를 작성하려고하는데, 어떤 테스트 케이스를 실행할 것인지 사용자에게 묻습니다. 아래와 같이 보입니다 …,
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_1
와 Test_Cases_N
. 그런 다음이 두 가지 테스트 케이스를 실행하고 Test_Cases_2 to ....
. 결과 창에서도 Test_Cases_1
및 의 결과를보고 싶습니다 Test_Cases_N
.
따라서 GoogleTest가 표시되면 다음과 같은 메서드가 있습니다 test_case_to_run_count()
. 그러나 모든 것이 test cases
Test_F () 메서드로 등록되고 있습니다. 그래서 많은 분석을했지만 여전히 해결책을 찾지 못했습니다. 제발 도와주세요.
답변
고급 옵션 을 사용 하여 Google 테스트를 실행할 수 있습니다 .
일부 단위 테스트 만 실행하려면 여러 테스트와의 일치를 위해 및 와일드 카드를 --gtest_filter=Test_Cases1*
허용하는 값이있는 명령 줄 옵션을 사용할 수 있습니다 . 나는 그것이 당신의 문제를 해결할 것이라고 생각합니다.*
?
UPD :
문제는 특정 테스트 케이스 를 실행 하는 방법이었습니다 . gtest를 GUI와 통합하는 것은 또 다른 문제입니다. 접근 방식에 대한 세부 정보를 제공하지 않았기 때문에 설명 할 수 없습니다. 그러나 다음 접근 방식이 좋은 시작이라고 생각합니다.
- 테스트를 실행하여 모든 테스트 케이스 가져 오기
--gtest_list_tests
- 이 데이터를 GUI로 구문 분석
- 실행하려는 테스트 케이스 선택
- 옵션으로 테스트 실행 파일 실행
--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();
그래서 모든 답변에 감사드립니다.
당신은 훌륭합니다.