.. _rostest_configuration:
Configuring rostest
-------------------
Rostest_ is needed whenever unit tests require a roscore_ for running
ROS nodes.
package.xml
:::::::::::
The ``rostest`` package is needed at build time, because it defines
the ``add_rostest()`` CMake command::
rostest
Do not declare a ````, because it will conflict with the
required ````.
CMakeLists.txt
::::::::::::::
You must also include ``rostest`` in your ``find_package()``
components. Since these dependencies are for tests only you should
find them in a second invocation inside a conditional block::
if (CATKIN_ENABLE_TESTING)
find_package(catkin REQUIRED COMPONENTS rostest ...)
endif()
Finally, declare your rostest launch scripts::
if (CATKIN_ENABLE_TESTING)
add_rostest(tests/your_first_rostest.test)
add_rostest(tests/your_second_rostest.test)
endif()
In case you have a test that accepts arguments, you can pass them like
this::
add_rostest(tests/your_rostest.test ARGS arg1:=true arg2:=false)
If your rostest needs extra data in order to run, you can use the
``catkin_download_test_data()`` to download the data.
Read more about :ref:`downloading_test_data_2`.
Then you can add a dependency between the rostest target and the
target from ``catkin_download_test_data()``, in order to download the
data before the rostest runs::
if (CATKIN_ENABLE_TESTING)
find_package(rostest REQUIRED)
catkin_download_test_data(
${PROJECT_NAME}_32e.pcap
http://download.ros.org/data/velodyne/32e.pcap
MD5 e41d02aac34f0967c03a5597e1d554a9)
add_rostest(tests/your_rostest.test DEPENDENCIES ${PROJECT_NAME}_32e.pcap)
endif()
If your rostest should contain a gtest executable you can use the
following convenient function::
if (CATKIN_ENABLE_TESTING)
add_rostest_gtest(your_third_rostest_target tests/your_third_rostest.test src/test/your_third_rostest.cpp [more cpp files])
target_link_libraries(your_third_rostest_target [libraries to depend on, e.g. ${catkin_LIBRARIES}])
endif()
For more information how to write and run rostests please go to the
Rostest_ wiki page.
.. _roscore: http://www.ros.org/wiki/roscore
.. _Rostest: http://ros.org/wiki/rostest