Unit testing

Here we will just add a test that checks that forty plus two are forty-two. (Just in case ...)

Adding a test

Call qi_create_test with the first argument being the name of the test, and the rest being the sources of the executable.

qi_create_test(foo_test test.cpp)

If you have arguments to pass to the executable you want to test, simply add them to the qi_create_test call, like this:

qi_create_test(foo_test foo_test.cpp ARGUMENTS "--foo=bar")

If you have gtest installed, you can use qi_create_gtest:

qi_create_gtest(foo_test foo_test.cpp
  DEPENDS gtest)

This will automatically add the –xml-output option to store the results of the test as XML files in foo/build-<config>/tests-results, which is useful when you are doing continuous integration.

If you need to run the same executable with different arguments, you should use a lower-level function called qi_add_test

qi_create_bin(test_launcher
 test_launcher.cpp NO_INSTALL)

qi_add_test(test_launch_foo
 test_launcher
   ARGUMENTS "foo")

qi_add_test(test_launch_bar
 test_launcher
   ARGUMENTS "bar")

Important

Please read Note for CTest users before using qibuild test for continuous integration.