summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/unit-testing.md54
1 files changed, 54 insertions, 0 deletions
diff --git a/docs/unit-testing.md b/docs/unit-testing.md
new file mode 100644
index 0000000..ef28ada
--- /dev/null
+++ b/docs/unit-testing.md
@@ -0,0 +1,54 @@
+# Unit testing at AzerothCore
+
+## How to compile and run the AC unit tests
+
+1. You have to compile your core by passing `-DUNIT_TESTS=1` in your `cmake` command.
+
+For example:
+
+```
+cd azerothcore
+mkdir build
+cd build
+cmake ../ -DWITH_WARNINGS=1 -DTOOLS=0 -DSCRIPTS=1 -DUNIT_TESTS=1
+make install -j 6
+```
+
+2. You can now run the unit tests using:
+
+```
+./build/src/test/unit_tests
+```
+
+## How to write unit tests for AzerothCore
+
+### Googletest Framework
+
+We use [googletest](https://github.com/google/googletest) at AzerothCore as our testing framework. Some useful references that explain how it works are available at:
+
+- https://github.com/google/googletest/blob/master/googletest/docs/primer.md
+- https://github.com/google/googletest/blob/master/googlemock/README.md
+- https://github.com/nordlow/gtest-tutorial
+
+You can find plenty of other references online that explain how to deal with googletest or unit testing in general.
+If you know some other useful resources, feel free to edit this page and add them.
+
+We recommend to read the googletest docs **before** starting to write unit tests.
+
+### File structure
+
+Unit tests are located under `src/test`. To add new tests, just edit the existing files or create new ones.
+
+We try to follow the same structure of the `src/*` directory, for example in order to test the file located at:
+
+```
+src/server/game/Miscellaneous/Formulas.h
+```
+
+We keep its test at:
+
+```
+src/test/server/game/Miscellaneous/FormulasTest.cpp
+```
+
+That's it, happy testing!