googlemock 相关问题

考虑到C ++的具体细节,Google C ++ Mocking Framework(或简称Google Mock)是一个用于编写和使用C ++模拟类的库。

如何使用gmock MOCK_METHOD进行重载对象引用?

我重载了对象引用以返回值,例如: 类 MyClass : 公共 MyClassInterface { 民众: 虚拟 ~MyClass() 覆盖; 运算符 const int&() const overr...

回答 1 投票 0

如何使用 gmock (Google Mock) 模拟模板类?

我有一个类模板如下: 结构 DailyQuote_t; 结构 TickQuote_t; 模板 类 QtBuffer_t { 民众: 虚拟 int size() const noexcept = 0; }; 测试时...

回答 2 投票 0

GMOCK 接受变量参数的方法

我有一个类,它有一个接受变量参数的方法: 我的班级 { 民众: 虚拟无效 myprint(const char* 格式, ...) = 0; }; 我试图嘲笑上面的课程 模拟类:

回答 2 投票 0

如何编写谷歌模拟匹配器来匹配空指针参数?

我有一个函数,它接受我正在嘲笑的 const void* 。我想要基于传递给函数的指针值的匹配器。 例如: #包括 #包括...

回答 1 投票 0

将 std::string 和 StrictMock<MockClass> 的映射注入到被测试的类中

我有一个类将按钮路由到各自的工作人员。我的工作人员正在接受测试,我现在需要测试我的路由器。问题是我的路由器无法接收mocks l 的地图...

回答 1 投票 0

如何消除指针和函数的引用版本的歧义?

我们在一个界面中有两个函数,它们的占用空间看起来几乎相同。唯一的区别是一个使用指针变量,另一个使用引用。 (我们正在处理

回答 1 投票 0

使用 NVI Idiom 模拟非虚拟函数问题

我在我的类设计中遵循了 Herb Sutter 的 NVI 习语,因为它有好处。我的抽象类简而言之如下。 类通讯器{ 民众: 布尔连接(无效){ // 一些

回答 1 投票 0

避免在 Google Mock 中多次匹配 .WillOnce

我有一个模拟对象设置,如下所示: 我的对象 obj; EXPECT_CALL(obj, myFunction(_)) .WillOnce(返回(1)) .WillOnce(返回(1)) .WillOnce(返回(1)) .WillRepeatedly(Return(-1)); 有没有...

回答 3 投票 0

GMock / 虚拟函数 / Boost MSM 如何正确组合?

我需要你的帮助。下列: 类 X 定义了组成命令的方法。这些命令被发送到 UART 设备。 X 类必须是静态的。类 X 的方法必须在状态下调用

回答 1 投票 0

GTEST 匹配器来比较给定结构的向量

所以我有定义的简单结构(几个字段)的实际和预期数据向量。 我发现匹配器 UnorderedElementsAreArray() 可以“作用于”实际值并获得预期的 vecto...

回答 1 投票 0

如何在 Google Mock C++ 中模拟带有默认参数的方法?

如何在 Google Mock 中模拟带有可选参数的方法?例如: 我尝试这样做,但它不起作用: 模板 A级 { 民众: 虚拟无效 set_enable(const int test,

回答 1 投票 0

如何将额外的参数传递给google模拟EXPECT_CALL

我正在测试通过接口使用依赖项的 C++ 类。我已经模拟了该接口,并有一个复杂的 lambda,我在 GMock 的 EXPECT_CALL 中使用它来验证我的类是否调用了模拟的 fu...

回答 1 投票 0

EXPECT_CALL 返回“实际:从未调用过 - 不满意且处于活动状态”

我有以下场景,我调用 EXPECT_CALL 将函数 Foo 的返回值设置为 true 但出现以下错误 实际:从未致电 - 不满意并采取行动...

回答 2 投票 0

如何构建 google 测试和 google 模拟库并在 VS 控制台应用程序中使用它们?

如何创建基于 google test 的单元测试项目,将最新的 gtest.lib 和 gmock.lib 集成到控制台应用程序或空项目中(不想使用 Visual Studio google 测试项目

回答 1 投票 0

如何使用 gmock 匹配 C++ 元组中的一个元素?

如何使用 gmock 匹配 C++ 元组中的一个元素? 例如,让我们尝试从 std::tuple 中提取 std::string 。 我知道我可以编写一个自定义匹配器,例如...

回答 2 投票 0

通过MOCK_METHOD模拟类时,是否需要override关键字?

可以说我有 类 Foo { 民众: VIRTUAL_FOR_TEST 无效栏(int i); }; 它被嘲笑的地方 类 FooMock : 公共 Foo { 民众: MOCK_METHOD(void, bar, (int), ()); }; Foo 应该只是...

回答 1 投票 0

Google 测试 Expect 来自函数的调用

假设我有一个简单的模拟测试。 #include“boost/interprocess/detail/interprocess_tester.hpp” #包括 #包括 使用命名空间::testing;

回答 1 投票 0

使用 gtest 测试来自 MOCK_METHOD 调用的 std::vector 参数

有没有办法将向量引用中的数据存储到 MOCK_METHOD 中? 我有以下模拟界面: MOCK_METHOD(bool, SetData, (const std::vector& data), (override)); ...

回答 2 投票 0

如何使用gmock MOCK_METHOD进行重载运算符?

我是 googlemock (和 StackOverflow)的新手。我在 googlemock 中使用 MOCK_METHODn 时遇到问题,我相信这个函数被广泛使用。这就是我所做的。 我有一个抽象类 Foo ,带有 v...

回答 1 投票 0

EXPECT_CALL() 宏在尝试抛出自定义异常时无法编译

我有以下代码 test.cpp ,无法编译(使用 g++ test.cpp -lgtest -lgmock -pthread -lfmt 编译),我收到此错误: 无法转换‘std::forward 我有以下代码 test.cpp ,无法编译(使用 g++ test.cpp -lgtest -lgmock -pthread -lfmt 编译),我收到此错误: 无法将‘std::forward从‘CustomException’转换为‘fmt::v8::format_string<>’ 这段代码的正确版本应该是什么:)? #include <gtest/gtest.h> #include <gmock/gmock.h> #include <stdexcept> #include <fmt/core.h> using ::testing::_; using ::testing::Throw; class CustomException : public std::exception { public: template <typename... Args> explicit CustomException(Args&&... args) : _exception_string{fmt::format(std::forward<Args>(args)...) + _exception_suffix} { } inline const char* what() const noexcept override { return _exception_string.c_str(); } private: std::string _exception_suffix{" Custom exception..."}; std::string _exception_string{}; }; class Calculator { public: virtual double Divide(double a, double b) { if (b == 0.0) { throw std::invalid_argument("Division by zero"); } return a / b; } }; // Mock class for Calculator class MockCalculator : public Calculator { public: MOCK_METHOD(double, Divide, (double a, double b), (override)); }; TEST(CalculatorTest, DivideWithExceptions) { MockCalculator mockCalculator; EXPECT_CALL(mockCalculator, Divide(10.0, 0.0)) .WillOnce(Throw(CustomException("Division by zero"))); // Test division by zero try { double result = mockCalculator.Divide(10.0, 0.0); FAIL() << "Expected exception not thrown."; } catch (const std::invalid_argument& e) { EXPECT_STREQ(e.what(), "Division by zero"); } } int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } 这样的构造函数将起作用: template <typename... Args> explicit CustomException(std::string_view fmt, Args&&... args) : _exception_string{fmt::format(fmt, std::forward<Args>(args)...) + _exception_suffix} { } 我填写它与P2216R3有关,通过参数展开收到的格式字符串不是constexpr。不幸的是我没有时间在文章中进行北斗潜水。

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.