gpt4 book ai didi

c++ - Google Mock 和 Catch.hpp 集成

转载 作者:可可西里 更新时间:2023-11-01 16:04:43 25 4
gpt4 key购买 nike

我非常喜欢用于测试的 catch.hpp ( https://github.com/philsquared/Catch )。我喜欢它的 BDD 风格和它的 REQUIRE 语句,它的断言版本。但是,catch 没有附带模拟框架。

我正在处理的项目有 GMock 和 GTest,但我们也在一些项目中使用了 catch。我想将 GMock 与 catch 一起使用。

我在宏 FAIL 和 SUCCEED 的 catch.hpp 和 gtests 头文件中发现了 2 个冲突。由于我没有使用 TDD 样式而是使用 BDD 样式,我将它们注释掉了,我检查了它们在 catch.hpp 的其他任何地方都没有被引用。

问题:使用EXPECT_CALL() 不会返回任何内容,也不会通过回调来了解 EXPECT 是否已通过。我想做类似的事情:

REQUIRE_NOTHROW(EXPECT_CALL(obj_a, an_a_method()).Times(::testing::AtLeast(1)));

问题:如果 EXPECT_CALL 失败(或返回值),我如何获得回调

最佳答案

编辑: 弄清楚如何集成它并在这个 github 存储库中放一个例子 https://github.com/ecokeley/catch_gmock_integration


经过几个小时的搜索,我回到了 gmock 并阅读了一些关于它的内容。在 "Using Google Mock with Any Testing Framework" 中找到了这个:

::testing::GTEST_FLAG(throw_on_failure) = true;
::testing::InitGoogleMock(&argc, argv);

这会导致在失败时抛出异常。他们推荐"Handling Test Events"实现更无缝的集成。

class MinimalistPrinter : public ::testing::EmptyTestEventListener {
// Called after a failed assertion or a SUCCEED() invocation.
virtual void OnTestPartResult(const ::testing::TestPartResult& test_part_result) {
printf("%s in %s:%d\n%s\n",
test_part_result.failed() ? "*** Failure" : "Success",
test_part_result.file_name(),
test_part_result.line_number(),
test_part_result.summary());
}
}

关于c++ - Google Mock 和 Catch.hpp 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30485877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com