如果调用google mocked方法超过预期次数,我怎样才能使google测试失败?
以下是示例:
class MockIO : iIO
{
MOCK_METHOD1(IO_Read, void (uint8_t));
};
TEST(case, test)
{
MockIO io;
EXPECT_CALL(io, IO_Read(0x01)).Times(10);
for (i=0; i<20; i++)
io.IO_Read(0x01);
}
据我所知,我应该尝试
EXPECT_CALL(io, IO_Read(0x01)).Times(10).Throw(exception);
但是在嵌入式项目中没有使用异常。
有什么想法吗?
答案 0 :(得分:3)
我认为你应该使用严格的模拟测试。
TEST(case, test){
StrictMock<MockIO> io;
EXPECT_CALL(io, IO_Read(0x01)).Times(10);
使用Strictmock时,预期的调用不会导致测试失败。
http://code.google.com/p/googlemock/wiki/CookBook#Nice_Mocks_and_Strict_Mocks
答案 1 :(得分:1)
但是在嵌入式项目中没有使用异常。
没关系,因为您不应该在嵌入式平台上运行单元测试,而是为您的PC运行。
设定期望值可以减少到:
EXPECT_CALL(io, IO_Read(0x01)).Times( AtLeast( 10 ) );
不满足条件会抛出异常。
要让googlemock库针对失败的期望抛出异常:
::testing::GTEST_FLAG(throw_on_failure) = true;