summaryrefslogtreecommitdiffstats
path: root/tests/README.test
blob: f4fcb34da61e84d81ccfa9ce3657dbbc43d24b77 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
                  C++ automatic testing similar to JUnit
                     Stefan Westerfeld <[email protected]>

What it is:
===========

These tests use a little testing framework, which consists currently only
of the file test.h. It is very much inspired by JUnit (www.junit.org), but it
is maybe even simpler. But it integrates nicely in Makefile.am automatic
testing. You can simply type

make check

to see if all tests pass. The motivation behind it is, when you are working
on a large project, it is often impossible to test quickly whether everything
still works all right after changes (which you should before committing ...).
This is even more true if you are not working alone on the code.

With a consistent set of tests that verify whether everything is still all
right, things like breaking one thing while fixing another can be made less
likely at least.

How to add a new set of tests:
==============================

1. create a new .cpp file, for this example we'll suppose testarithmetic.cpp
2. #include "test.h"
3. create a struct which will hold all your tests

struct TestArithmetic : public TestCase {
	TESTCASE(TestArithmetic);
};

4. if you want to, override the following methods:

	void setUp()
	{
		/*
		 * This method is supposed to build a little test world, which will be
		 * built for each test method that is executed - the idea is that your
		 * tests will use this environment to test in.
		 */
	}
	void tearDown()
	{
		/*
		 * This method should completely destroy your test world again, so
		 * that for the next test, a fresh one can be created.
		 */
	}

5. define new tests like this

	TEST(arithmetic) {
		long a = 2;
		long b = 2;
		long c = a+b;

		testAssert(c < 5);		// you assert that this condition is true
		testEquals(4,c);		// you assert that the first (expected) value
	}							// equals the second (computed) value

6. define a main for your test like this

TESTMAIN(TestArithmetic);

7. add the following to the Makefile.am (you may want to add more source files,
   as required)

testarithmetic_SOURCES = testarithmetic.cpp

8. add it to check_PROGRAMS