У меня есть параметризованный тест с 2 тестами.Один обычный TEST_F, который также ожидает вызов mock_function и который работает как положено.А другой, который не срабатывает по числу вызовов функции mock_function и выглядит следующим образом:
TEST_P( ParameterizedFixtureClass, TestName )
{
int in1 = std::tr1::get<0>(GetParam());
int in2 = std::tr1::get<1>(GetParam());
bool exp_out = std::tr1::get<2>(GetParam());
bool act_out = False;
EXPECT_CALL(mock_impl, mock_function(_,_,_,_))
//.times(2); <--Fails
.times(AtLeast(2)); // <-- Works
function_under_test( in1, in2, &act_out );
ASSERT_EQ( exp_out, act_out ) << "Unexpected actual output" << std::endl;
}
std::tr1::tuple<int, int, bool> const ParamTable[] = {
// in1 in2 exp_out
make_tuple( 12, 4, FALSE ),
make_tuple( 15, 0, FALSE ),
make_tuple( 15, 4, TRUE )
};
INSTANTIATE_TEST_CASE_P( TestWithParameters, ParameterizedFixtureClass,
::testing::ValuesIn( ParamTable) );
Когда тестовый случай вызывается с помощью .times (2), он завершается неудачно, поскольку mock_function вызывается 4x согласно googlemock.хотя функция mock_function называется 2x в function_under_test.Но когда я изменяю его на .times (AtLeast (2)), он работает.
Так что кажется, что счетчик функций для mock_function не сбрасывается между различными параметризованными вызовами.Примечание: это даже происходит, когда в ParamTable есть только 1 кортеж ввода / вывода, поэтому кажется, что даже вызовы mock_function из моего первого тестового примера не были сброшены.
Отсюда мой вопрос: что мне делать, чтобыубедитесь, что он сбрасывается для каждого параметризованного вызова, чтобы я мог использовать .times (2) вместо временного решения .times (AtLeast (2))?