summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/unittest-cpp/docs/Writing-and-Running-Your-First-Test.md
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2015-05-27 15:00:06 +0200
committer Miodrag Milanovic <mmicko@gmail.com>2015-05-27 15:00:06 +0200
commitee4adf600bdd3aa60cc0e92a39f2111be0a90bc6 (patch)
tree5ecb86b72eef1c19ad3ab6c7ba8d8b2a964e0cb9 /3rdparty/unittest-cpp/docs/Writing-and-Running-Your-First-Test.md
parent55fa9840f263361efc73126c3f41be606fea7168 (diff)
Added library for supporting unit tests (nw)
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.md65
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