Skip to content

Instantly share code, notes, and snippets.

@sunapi386
Created May 14, 2020 00:18
Show Gist options
  • Save sunapi386/74c06f1fa56c5da02db6a6ef0928ec20 to your computer and use it in GitHub Desktop.
Save sunapi386/74c06f1fa56c5da02db6a6ef0928ec20 to your computer and use it in GitHub Desktop.
ros publish subscribe test
string TOPIC = /ack
time ts
project(rosexample)
cmake_minimum_required(VERSION 3.1)
add_compile_options(-std=c++17)
find_package(catkin REQUIRED COMPONENTS roscpp rospy rostest std_msgs message_generation)
add_message_files(FILES ack.msg)
generate_messages(DEPENDENCIES std_msgs)
include_directories(${catkin_INCLUDE_DIRS})
add_rostest_gtest(tester tester.test tester.cpp)
add_dependencies(tester ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(tester ${catkin_LIBRARIES} ${rostest_LIBRARIES} gtest)
#include <ros/ros.h>
#include <gtest/gtest.h>
#include "ack.h"
TEST(MyTestSuite, pubSub)
{
ros::NodeHandle nh;
uint16_t h = 0;
ros::Publisher pub = nh.advertise<ack>(ack::TOPIC, 0);
ros::Subscriber sub = nh.subscribe<ack>(ack::TOPIC, 0, [&h](const ros::MessageEvent< ack const >& event) {
auto msg = *(event.getConstMessage());
h = 1U;
});
EXPECT_EQ(pub.getNumSubscribers(), 1U);
EXPECT_EQ(sub.getNumPublishers(), 1U);
boost::shared_ptr<ack> ack1(new ack);
pub.publish(ack1);
ros::spinOnce();
EXPECT_EQ(h, 1U);
}
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
ros::init(argc, argv, "async_service_node_tester");
return RUN_ALL_TESTS();
}
<launch>
<test pkg="rosexample" type="tester" test-name="tester" />
</launch>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment