Как проверить непрерывные / связанные изменения, используя каркас googletest/googlemock?
Я пытаюсь проверить класс Foo на предмет возврата статуса его метода с помощью googletest/googlemock. Насколько я понимаю, для каждого вызова метода counter()
значение m_counter должно увеличиваться на единицу, однако я всегда получаю один или один и тот же результат, т.е. m_counter никогда не достигает предела. Означает ли это, что все данные очищаются для каждого вызова? Может кто-нибудь сказать, помогите мне, как проверить смежные / связанные изменения с помощью Google Test? Это выглядит каждый звонок counter()
это собственная история (не связанная), даже если объект такой же?
class Foo
{
public:
Foo() { m_counter = 0;}
void counter() { m_counter++; }
int getCounter() { return m_counter;}
int status() { return (m_counter>=5)?0:1;}
private:
int m_counter;
};
TEST_F(TestFoo, TestStatus_1)
{
Foo fooP;
fooP.counter();
ASSERT_TRUE(fooP.status() == 0);
std::cout<<fooP.getCounter()<<std::endl; //should be 1
fooP.counter();
ASSERT_TRUE(fooP.status() == 0);
std::cout<<fooP.getCounter()<<std::endl; //should be 2
fooP.counter();
ASSERT_TRUE(fooP.status() == 0);
std::cout<<fooP.getCounter()<<std::endl; //should be 3
fooP.counter();
ASSERT_TRUE(fooP.status() == 0);
std::cout<<fooP.getCounter()<<std::endl; //should be 4
fooP.counter();
ASSERT_TRUE(fooP.status() == 0);
std::cout<<fooP.getCounter()<<std::endl; //should be 5
fooP.counter();
ASSERT_TRUE(fooP.status() == 1);
std::cout<<fooP.getCounter()<<std::endl; //should be 6
}
1 ответ
Ошибка в коде:
int status() { return (m_counter>=5)?0:1;}
должно быть:
int status() { return (m_counter<=5)?0:1;}