diff options
Diffstat (limited to '3rdparty/unittest-cpp/docs/Writing-and-Running-Your-First-Test.md')
-rw-r--r-- | 3rdparty/unittest-cpp/docs/Writing-and-Running-Your-First-Test.md | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/3rdparty/unittest-cpp/docs/Writing-and-Running-Your-First-Test.md b/3rdparty/unittest-cpp/docs/Writing-and-Running-Your-First-Test.md new file mode 100644 index 00000000000..42acd8b70f6 --- /dev/null +++ b/3rdparty/unittest-cpp/docs/Writing-and-Running-Your-First-Test.md @@ -0,0 +1,65 @@ +Let's assume that, whatever compiler / IDE / build system you're using, you know how to include the headers and libraries built in [Building UnitTest++ using CMake](wiki/Building-UnitTest++-With-CMake). There are too many build systems to cover here, and is not the purpose of this guide. + +Examples + +Creating Your Test Executable Main +------------------------------------ + +The most basic main function you can write that will run your unit tests will look something like this: + +```cpp +// main.cpp -- take 1 +#include "UnitTest++/UnitTest++.h" + +int main(int, const char *[]) +{ + return UnitTest::RunAllTests(); +} +``` + +If this compiles and links, you can now run and you should get output resembling this: + +``` +Success: 0 tests passed. +Test time: 0.00 seconds. +``` + +Adding a Sanity Test +---------------------- +If you ran the self-tests bundled with UnitTest++, we should be pretty comfortable that everything is working okay at this point. However, the next thing I usually like to do is add a "sanity test". + +```cpp +// main.cpp -- take 2 +#include "UnitTest++/UnitTest++.h" + +TEST(Sanity) +{ + CHECK_EQUAL(1, 1); +} + +int main(int, const char *[]) +{ + return UnitTest::RunAllTests(); +} +``` + +The `TEST` token is a C-style macro that introduces a test case named 'Sanity'. The `CHECK_EQUAL` token is, similarly, a macro. In this case it is asserting that, for the test to pass, 1 must be equal to 1. Running this test program should output: + +``` +Success: 1 tests passed. +Test time: 0.00 seconds. +``` + +If you want to doubly check the sanity of things, we can make our test fail by changing `CHECK_EQUAL(1, 1)` to `CHECK_EQUAL(1, 2)`. Run this and you should now see something like this: + +``` +main.cpp:6:1: error: Failure in Sanity: Expected 1 but was 2 +FAILURE: 1 out of 1 tests failed (1 failures). +Test time: 0.00 seconds. +``` + +The exact output will vary somewhat based on your environment. What is perhaps most important, however, is that the OS exit code will be non-zero, indicating a failure to your toolchain. `UnitTest::RunAllTests()` returns the number of failures that occurred during the run. + +Next Steps +------------ +If you're comfortable with the concepts of unit testing in general, you can probably go on now to the [[Macro Reference]] to learn about the CHECK and TEST macros available to you. However, if you'd like a more detailed guide to using UnitTest++, especially in the context of test-driven development, you might want to go on to [[Writing More Tests With the Bowling Game Kata]].
\ No newline at end of file |