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!