gtest中的expect_call如何抛出异常
时间: 2024-04-13 16:31:06 浏览: 171
catch_gmock_integration:当使用 catch.hpp 测试框架时,允许 EXPECT_CALL 和其他 gmock 函数工作的代码倾倒场。 https
在使用gtest的expect_call时,如果你想让一个模拟函数在被调用时抛出异常,你可以使用WillOnce和Throw来实现。以下是一个示例:
```cpp
#include <gtest/gtest.h>
#include <gmock/gmock.h>
class MockFoo {
public:
MOCK_METHOD(void, Bar, ());
};
TEST(MyTest, TestExpectCallThrow) {
MockFoo mockFoo;
// 设置expect_call,并在调用时抛出异常
EXPECT_CALL(mockFoo, Bar())
.WillOnce(::testing::Throw(std::runtime_error("MockFoo::Bar() exception")));
// 调用模拟函数
ASSERT_THROW(mockFoo.Bar(), std::runtime_error);
}
```
在上面的例子中,我们创建了一个名为MockFoo的模拟类,并为其定义了一个Bar函数。在测试用例中,我们使用EXPECT_CALL来设置对Bar函数的expect_call,并使用WillOnce和Throw来指定在调用该函数时抛出std::runtime_error异常。然后,我们调用mockFoo.Bar(),并使用ASSERT_THROW来验证是否抛出了std::runtime_error异常。
这样,当模拟函数被调用时,它将抛出异常,从而满足我们的测试需求。
阅读全文