tests
is the root level directory for SDK testing.
Unit and integration tests are contained within the unit
and integration
directories, respectively. Note that unit tests do NOT do I/O and are very fast
whereas integration tests typically require I/O, are slower, and harder to maintain.
Unit and integration tests require the google test framework: https://github.com/google/googletest
Building gtest and the tests itself depends very much on your OS and your build system of choice. We currently support autotools, QMake, and CMake.
You can run all tests or just a subset of the tests by supplying a filter to the
test executable, e.g., ./test_unit --gtest_filter=Crypto*
Unit and integration tests are organized in such a way that the filename
should match the name of the contained test suite. A single test file should
only contain a single test suite. E.g., Crypto_test.cpp
should only contain
tests like TEST(Crypto, blahblah)
. This makes test discovery more efficient.
Any testing framework code should live inside the mt
namespace (= mega testing).
The tool
directory contains standalone test applications that must be run manually.
The python
directory contains work-in-progress system tests written in python.