【问题标题】:Boost::test and mocking framework [closed]Boost::test 和 mocking 框架
【发布时间】:2011-07-20 09:15:34
【问题描述】:

我正在使用 boost::test 并且需要使用一个模拟框架。有人有什么建议吗?

【问题讨论】:

    标签: c++ testing boost mocking


    【解决方案1】:

    Fake-It 是一个简单的 C++ 模拟框架,它使用最新的 C++11 特性来创建一个富有表现力(但非常简单)的 API。 使用 FakeIt,无需重新声明方法,也无需为每个模拟创建派生类,并且它具有内置的 boost::test 集成。 以下是你如何伪造它:

    struct SomeInterface {
      virtual int foo(int) = 0;
    };
    
    // That's all you have to do to create a mock.
    Mock<SomeInterface> mock; 
    
    // Stub method mock.foo(any argument) to return 1.
    When(Method(mock,foo)).Return(1);
    
    // Fetch the SomeInterface instance from the mock.
    SomeInterface &i = mock.get();
    
    // Will print "1"
    cout << i.foo(10);
    

    还有更多功能可供探索。继续give it a try

    【讨论】:

      【解决方案2】:

      我最近为我的最新项目搜索了单元测试和模拟框架,并选择了Google Mock。它有最好的文档,而且功能似乎相当不错(尽管我还没有创建非常复杂的模拟对象)。我最初考虑使用boost::test,但最终改用Google Test(我认为这是Google Mock 的先决条件,即使您使用其他测试框架也是如此)。它还具有良好的文档,并具有我所期望的大部分功能。

      【讨论】:

        【解决方案3】:

        你可以试试Turtle

        【讨论】:

        • Turtle 有什么优势?
        • 嗯,它很容易与 boost::test 集成:例如,您不需要所有使 boost::test 项目使用 gmock 所需的变通方法(另请参阅stackoverflow.com/questions/38890959/…) .
        • Turtle 的文档非常简洁,几乎是空的。我不认为这是一个优势。海龟很难用。
        【解决方案4】:

        Here 你有一个使用 Google Mock 和 Boost Test 的例子。我更喜欢 Boost Test,因为我经常使用其他 Boost libraries

        【讨论】:

          【解决方案5】:

          GoogleMock 有一节介绍如何与another framework 一起使用。

          【讨论】:

          【解决方案6】:

          ELFSpy 让您在运行时用替代实现替换(模拟)函数、方法、虚拟函数等。

          https://github.com/mollismerx/elfspy/wiki

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-02-05
            • 2011-05-07
            • 1970-01-01
            相关资源
            最近更新 更多