(Relatively) Easy Unit Testing for C
How to use
- Copy subdirectory
ctinto your project.
- Add some rules to your makefile. See Makefile for an example.
- Write some tests. See msg-test.c for an example. Test function names begin with "cttest".
- The test runner runs each test in a separate process, so global state from one test will not affect another.
- Each test is run in a new process group; all processes in the group will be killed after the test finishes. This means your test can fork without having to worry about cleaning up its descendants.
- CT participates in GNU make's jobserver protocol. If you
+in front of the _ctcheck command (as in the sample makefile) and run make with its
-jNflag, for example
make -j16 check, CT will run tests concurrently (and hopefully in parallel).
make check in the example supplied looks like this:
~/Projects/ct[master]: make -j4 check cc -Werror -Wall -c -o msg-test.o msg-test.c ct/gen msg-test.o > ct/_ctcheck.c.part mv ct/_ctcheck.c.part ct/_ctcheck.c cc -Werror -Wall -c -o ct/_ctcheck.o ct/_ctcheck.c cc -Werror -Wall -c -o ct/ct.o ct/ct.c cc -Werror -Wall -c -o msg.o msg.c cc ct/_ctcheck.o ct/ct.o msg.o msg-test.o -o ct/_ctcheck ct/_ctcheck E..FEF cttestexit: error (exit status 2) cttestfailure: failure msg-test.c:30: test: 1 == 2 cttestfmt: failure msg-test.c:37: test: n == 2 msg-test.c:37: n is 1 cttestsegfault: error (signal 11) 2 failures; 2 errors. make: *** [check] Error 1
There will be no releases of this tool. Just clone the latest source from git and copy it into your project. If you want to update, copy the newer source into your project.