AzerothCore
Pages :

Unit testing en AzerothCore

Cómo compilar y ejecutar los unit tests de AC

  1. Tienes que compilar tu core pasando -DBUILD_TESTING=1 en tu comando cmake.

Por ejemplo:

cd azerothcore
mkdir build
cd build
cmake ../ -DWITH_WARNINGS=1 -DTOOLS=0 -DSCRIPTS=static -DBUILD_TESTING=1
make install -j 6
  1. Ahora puedes ejecutar los unit tests usando:
./build/src/test/unit_tests

Cómo escribir unit tests para AzerothCore

Framework Googletest

En AzerothCore usamos googletest como nuestro framework de testing. Algunas referencias útiles que explican cómo funciona están disponibles en:

Puedes encontrar muchas otras referencias online que explican cómo trabajar con googletest o el unit testing en general. Si conoces algún otro recurso útil, siéntete libre de editar esta página y añadirlo.

Recomendamos leer la documentación de googletest antes de empezar a escribir unit tests.

Estructura de archivos

Los unit tests están ubicados en src/test. Para añadir nuevos tests, simplemente edita los archivos existentes o crea nuevos.

Intentamos seguir la misma estructura del directorio src/*; por ejemplo, para testear el archivo ubicado en:

src/server/game/Miscellaneous/Formulas.h

Mantenemos su test en:

src/test/server/game/Miscellaneous/FormulasTest.cpp

Problemas con los singletons

Tenemos algo de código heredado en AzerothCore que está fuertemente acoplado y hay singletons que son imposibles de mockear sin cierta refactorización.

Siguiendo las directrices de gmock, para mockear una clase primero deberías definir su interfaz. Luego puedes crear mocks y usarlos al hacer unit testing.

Hay ejemplos disponibles de refactorización de singletons de AzerothCore para hacerlos mockeables (y mejorar la arquitectura del software en general):

Ejemplos de unit tests existentes en AzerothCore

Ejecutar tests en IDEs

También puedes ejecutar los tests directamente en IDEs como CLion

CLion te permite ejecutar fácilmente los tests con debug y con cobertura:

AzerothCore running tests with CLion

luego muestra qué líneas del código están cubiertas por los tests (líneas verdes) y cuáles siguen sin cubrir (líneas rojas):

AzerothCore test coverage CLion

¡Feliz testing!