引数のあるrostest ファイルを実行する方法
ROS のお話です。
launchファイルに引数を与えて起動する$ roslaunch hoge hoge.launch huga:= "abcde"
みたいなことやってません?
hoge.launch をコピーしてrostestファイルhoge.testを作ったけど、CMakeLists.txtにどうやって引数与えるんだ!?ってなっていません?
その解決方法を記載します。
今回の目標
- 引数のあるroslaunch ファイルを準備する
- 引数のあるrostestファイルを準備する
- CMakeLists.txtを編集してテストを実行する
引数のあるroslaunchファイル
launch/hoge.launch
<launch> <arg name="huga" default="aiueo" /> <arg name="huga2" default=98765 /> <group ns="$(arg huga)"> <param name="huga_number" type="int" value="$(arg huga2)" /> <node name="hoge" pkg="hoge_package" type="hoge_node.py" /> <!-- 省略 --> </group> </launch>
引数のあるrostestファイル
tests/hoge.test
<launch> <arg name="huga" default="aiueo" /> <arg name="huga2" default=98765 /> <group ns="$(arg huga)"> <param name="huga_number" type="int" value="$(arg huga2)" /> <node name="hoge" pkg="hoge_package" type="hoge_node.py" /> <test test-name="test_hoge" pkg="hoge_package" type="test_hoge_node.py" /> <!-- 省略 --> </group> </launch>
CMakeLists.txt
# 省略 if(CATKIN_ENABLE_TESTING) find_package(rostest REQUIRED) add_rostest(tests/hoge.test ARGS huga:="abcde" huga2:=123456) endif()
テストの実行
$ cd ~/catkin_ws #ワーキングスペースに移動 $ catkin_make $ catkin_make run_tests # テストの実行 $ catkin_test_results # テスト結果の表示
ポイント
add_rostest() に ARGSを加えることで、testファイルに引数を与えられます。
catkin_make run_tests
は常にsuccessを返しちゃうので、catkin_test_results
で結果を確認しましょう