我是 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
}
我是一名优秀的程序员,十分优秀!