cmake 命令中传入 -DBUILD_TESTING=1 来编译核心。例如:
cd azerothcore
mkdir build
cd build
cmake ../ -DWITH_WARNINGS=1 -DTOOLS=0 -DSCRIPTS=static -DBUILD_TESTING=1
make install -j 6
./build/src/test/unit_tests
我们在 AzerothCore 中使用 googletest 作为测试框架。一些介绍其工作原理的有用参考资料:
你可以在网上找到许多其他介绍 googletest 或一般单元测试用法的参考资料。 如果你知道其他有用的资源,欢迎编辑此页面并将它们添加进来。
我们建议在开始编写单元测试之前阅读 googletest 文档。
单元测试位于 src/test 目录下。要添加新测试,只需编辑现有文件或创建新文件。
我们尽量遵循与 src/* 目录相同的结构,例如,为了测试位于以下路径的文件:
src/server/game/Miscellaneous/Formulas.h
我们将它的测试放在:
src/test/server/game/Miscellaneous/FormulasTest.cpp
AzerothCore 中有一些遗留代码耦合度高,存在一些不经过重构就无法 mock 的单例。
按照 gmock 指南,要 mock 一个类,你应当首先定义它的接口。然后你就可以创建 mock 并在单元测试中使用它们。
以下是重构 AzerothCore 单例使其可 mock(并总体上改善软件架构)的示例:
你也可以直接在 CLion 等 IDE 中运行测试。
CLion 可以让你轻松地以调试模式并带覆盖率运行测试:

然后它会显示哪些代码行已被测试覆盖(绿色行),哪些仍未覆盖(红色行):

祝测试愉快!