如何解决gmock基类的构造器实例化与另一个实例
在下面的示例中,我想模拟“ TestB类”,因为“ TestA类”具有外部依赖性。
示例代码:
*file : testA.h*
template <typename s>
class TestA : public class TestBase
{
.....
struct ConstructionToken
{
//`Code for construction token`
};
explicit TestA(ConstructionToken&& token) noexcept
: TestBase(token.ID,token.Con)
.....
};
*file : testB.h*
class TestB : public class TestA
{
.....
TestB(ConstructionToken&& token)
: TestA<TestB>(std::move(token)){}
.....
};
*file : testC.h*
class TestC : public class TestB
{
.....
TestC(ConstructionToken&& token)
: TestB(std::move(token)){}
.....
};
测试代码:
*File : Dependency_test.cpP*
TEST_F(DependencyCheckTest,DependencyCase1)
{
.......
// auto token = preconstruct the instance.
TestC cObj(std::move(token));
}
问题 在为“ TestC”类创建的测试代码对象中。
解决方法
我无法忽略对基类ctor的调用-ctor在C ++中从来都不是虚拟的,因此您无法覆盖它们。
在您的情况下,我建议使所有类都从具有默认ctor和默认虚拟dtor的纯虚拟类,如果可能的话,使所有其他方法变为纯虚拟。这样可以确保更好的举动并消除此类问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。