gpt4 book ai didi

c++ - 如何为单元测试 stub 命名空间

转载 作者:太空宇宙 更新时间:2023-11-04 15:37:53 24 4
gpt4 key购买 nike

我是 cpp 的新手。我如何在不调用 Foo 中的任何内容的情况下对 clazz 中的 bar 进行单元测试?

clazz.h

class Clazz {
public:
void bar (); //its implementation will call Foo::foo ()
}

我的文件.cc

namespace Foo {
void foo () { /* do something */ }
}

最佳答案

免责声明我在 Typemock 工作。

有一种方法可以在不创建包装器、将方法更改为虚拟方法、添加间接逻辑或传递函数指针的情况下进行测试。

//Use Isolator++ to fake foo.
WHEN_CALLED( Foo::foo() ).Ignore();

这是使用 Typemock Isolator++ .完整代码如下:

namespace Foo 
{
void foo () { throw "error"; } /* we want to fake this implementation */
}

class Clazz
{
public:
void bar () //its implementation will call Foo::foo ()
{
Foo::foo();
}
};


TEST_F(FakeStaticMethods, DontFailWhenBarIsCalled)
{
WHEN_CALLED( Foo::foo() ).Ignore();
Clazz c;
c.bar(); // WOW! code will not fail, no changes to production code
}

关于c++ - 如何为单元测试 stub 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29071140/

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