我正在尝试创建一个示例,说明依赖注入如何使我正在处理的当前代码库受益。该示例的一部分演示了 DI 如何使代码的单元可测试性受益。
在这个例子中,给出了我以前从未见过的编译错误:https://godbolt.org/z/3xoKhefYs。我确实明白必须实现虚函数。
查看googletest源码,对“TestBody()”的虚函数给出以下注释: https://github.com/google/googletest/blob/main/googletest/include/gtest/gtest.h# L326.
我在实施模拟或测试时是否遗漏了任何内容?我期待您的想法。
我在 Godbolt 中尝试了以下示例:https://godbolt.org/z/3xoKhefYs。我的期望是它能够编译并运行。但编译器给出的错误似乎指出了 googletest 框架的实现问题。
问题是,在
Test
的范围内有两个名为 TestFixture
的类:::testing::Test
(添加为 injected-class-name)和全局范围内的 ::Test
。当编译器查找Test
时,它首先找到注入类名::testing::Test
,这是一个抽象类。
解决方案只是将您的
struct Test
重命名为其他名称,或者在 ::Test
中的任何位置使用 TestFixture
以确保编译器从全局命名空间中选择您的类。