Very simply, you can't. At least, not directly. You have created a simple test case named Count with a single test named Count.Value and those names have no relationship to argc or argv.
In general, I would recommend using the SetUp() method of a text fixture or a parametric test fixture, instead of command line arguments. The purpose of unit testing is to
repeatably perform a series of tests so it is not desirable to use an external script or manual command line input to ensure that all tests are performed and are passing.
That said, you can use a test fixture to do what you describe, something like (caveat: this is not tested code, just a quick example). Note that this imposes some limitations that may become awkward as your test grow to non-trivial size (e.g., testing a complex class fully may require over a dozen test cases with scores or hundreds of tests). Note my addition to your main, in red.
class myTestClass {
private:
// put any instance variables you need here, to hold the results of your argc/argv processing for later use by individual tests
// these have to be static to be retained from test to test
static int myArgC; // example instance variable
public:
static init(int argc, char *argv[]); // process argc and argv in this method, retaining such values as your test requires, as with myArgC above
}
TEST_F(myTestClass, myFirstTest)
{
// if your test requires 3 arguments, do this test first
ASSERT_EQ(3, myArgC) << "Passed " << myArgC << " arguments but require exactly 3";
// put your tests here