遗憾的是,GlobalV和GlobalC虽然提供了“参数上云、用时下载”这一概念并方便了对待模拟体系的描述相关参数传递和热点函数调用,但对于单元测试来讲却并非好的设计,尤其对于GlobalC。我们可能在编写单元测试(以确定模块功能正常运作)时,会遇到对过多变量进行初始化的问题,例如我们只想使用UnitCellGlobalC::ucell,include GlobalC的头文件后,却发现了诸多的“undefined reference to Parallel_Kpoints”等问题。
std::cout << "The address of ucell: " << this->p_ucell << std::endl;
....
}
如此一来使得实际所使用的GlobalC中类(比如UnitCell)和其他类解耦开。
(单元测试)尽情mock你想要使用的类
假设你想要在单元测试中使用一些函数,但你include实现那个函数的cpp文件后发现出现了很多棘手的undefined reference to xxx,应该怎么办?又或者在你include的类中有其他的类对象作为成员,然后编译器提示报错undefined reference to [class]::[class](),怎么办?