Skip to content

Instantly share code, notes, and snippets.

@davetcoleman
Created October 12, 2018 01:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save davetcoleman/8d029f1f89c4e7a501d9f4ef062b613d to your computer and use it in GitHub Desktop.
Save davetcoleman/8d029f1f89c4e7a501d9f4ef062b613d to your computer and use it in GitHub Desktop.
Example test files
/*********************************************************************
* Software License Agreement (BSD License)
*
* Copyright (c) 2018, PickNik LLC
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of PickNik LLC nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/
/* Author: FIRST_NAME LAST_NAME
Desc: TODO:(EMAIL_ADDRESS)
*/
/** EXAMPLES:
EXPECT_FALSE(robot_state.hasFixedLinks());
EXPECT_EQ(robot_state.getFixedLinksCount(), 0);
EXPECT_TRUE(robot_state.getPrimaryFixedLink() == NULL);
EXPECT_GT(robot_state.getFixedLinksMode(), 0);
EXPECT_LT( fabs(vars[0] - 0), EPSILON) << "Virtual joint in wrong position " << vars[0];
*/
// C++
#include <string>
// ROS
#include <ros/ros.h>
// Testing
#include <gtest/gtest.h>
namespace PACKAGE_NAME
{
class CLASS_NAMETest : public ::testing::Test
{
public:
CLASS_NAMETest() : nh_("~")
{}
protected:
ros::NodeHandle nh_;
}; // class CLASS_NAMETest
TEST_F(CLASS_NAMETest, ConstructDestruct) { ASSERT_TRUE(base.initialize()); }
TEST_F(CLASS_NAMETest, NameOfTest)
{
bool test = true;
EXPECT_TRUE(test);
}
} // namespace PACKAGE_NAME
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
ros::init(argc, argv, "SHORT_NAME");
ros::AsyncSpinner spinner(1);
spinner.start();
int result = RUN_ALL_TESTS();
spinner.stop();
ros::shutdown();
return result;
}
<?xml version="1.0" encoding="utf-8"?>
<launch>
<test pkg="PACKAGE_NAME" type="CLASS_FILE_NAME_test" test-name="CLASS_FILE_NAME_test" time-limit="300" args="">
<rosparam command="load" file="$(find PACKAGE_NAME)/config/example.yaml"/>
</test>
</launch>
#############
## Testing ##
#############
if(CATKIN_ENABLE_TESTING)
find_package(rostest REQUIRED)
add_rostest_gtest(ros_test test/ros_test.test test/ros_test.cpp)
target_link_libraries(ros_test
${PROJECT_NAME}
${catkin_LIBRARIES}
${Boost_LIBRARIES}
)
endif()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment