Reputation: 11958
I am trying to write a function/method for my project, which will ask to user which all test cases are you going to run? It looks like below...,
Test_Cases_1
|_TestNo1
|_TestNo2....so on
Test_Cases_2
|_TestNo1
|_TestNo2....so on
....
....so on
Test_Cases_N
|_TestNo1
|_TestNo2....so on
So, now the challenge is while running the project it should prompt me what all test cases you would like to execute?
If I select Test_Cases_1
and Test_Cases_N
. Then it should execute these two test cases and should exclude all other from Test_Cases_2 to ....
. In result window also I would like to see the results of Test_Cases_1
and Test_Cases_N
.
So, if I will see the GoogleTest, there is a method called test_case_to_run_count()
;
But all the test cases
are getting registered with Test_F() method.
So, I did lots of analysis, but still did not find any solution.
Please help me.
Upvotes: 199
Views: 295071
Reputation: 20123
Summarising Rasmi Ranjan Nayak's and nogard's answers and adding another option:
You should use the flag --gtest_filter
, like this (quotes needed with wildcards),
--gtest_filter="Test_Cases1*"
(You can also do this in Properties|Configuration Properties|Debugging|Command Arguments)
You should set the variable GTEST_FILTER
like
export GTEST_FILTER = "Test_Cases1*"
You should set a flag filter
, like
::testing::GTEST_FLAG(filter) = "Test_Cases1*";
such that your main function becomes something like
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
::testing::GTEST_FLAG(filter) = "Test_Cases1*";
return RUN_ALL_TESTS();
}
See section Running a Subset of the Tests for more info on the syntax of the string you can use.
Upvotes: 156
Reputation: 9706
You could use advanced options to run Google tests.
To run only some unit tests you could use --gtest_filter=Test_Cases1*
command line option with value that accepts the *
and ?
wildcards for matching with multiple tests. I think it will solve your problem.
UPD:
Well, the question was how to run specific test cases. Integration of gtest with your GUI is another thing, which I can't really comment, because you didn't provide details of your approach. However I believe the following approach might be a good start:
--gtest_list_tests
--gtest_filter
Upvotes: 271
Reputation: 11958
Finally I got some answer,
::test::GTEST_FLAG(list_tests) = true;
//From your program, not w.r.t console.
If you would like to use --gtest_filter =*;
/* =*, =xyz*... etc*/
// You need to use them in Console.
So, my requirement is to use them from the program not from the console.
Updated:-
Finally I got the answer for updating the same in from the program.
::testing::GTEST_FLAG(filter) = "*Counter*:*IsPrime*:*ListenersTest.DoesNotLeak*";//":-:*Counter*";
InitGoogleTest(&argc, argv);
RUN_ALL_TEST();
So, Thanks for all the answers.
You people are great.
Upvotes: 36