Any new cmake macros should definitely go with rosjava.cmake and not into rosbuild. I imagine you can submit those as patches to Nicholas. regards, Ken On Tue, Jul 13, 2010 at 1:00 PM, Aaron Holroyd wrote: > Alright, so being completely honest, I first looked at what you sent and > thought it was nuts.  However, after getting it to work, it's a much nicer > solution (although it may not look it). > So, back to my original question, where should I be putting the cmake > macros?  For now, until I hear better, I'll put them in the > rosjava/cmake/rosjava.cmake file on my computer.  If they should go > somewhere else, let me know, but since Java isn't fully supported, I figured > it would be better to keep them out of public and private cmake in rosbuild. > If / When I get this to work with ros, I will send out my solution.  For > now, if anyone else wants this, to get JUnit to work from the command line I > just executed the following script: > #!/bin/bash > #Usage: junit.sh > if [ -z "$ANT_HOME" -o ! -d "$ANT_HOME" ] ; then >   if [ -d /usr/share/ant ] ; then >      ANT_HOME=/usr/share/ant >   fi > fi > # set ANT_LIB location > ANT_LIB="${ANT_HOME}/lib" > # set the classes for the test case runner and xml format > RUNNER=org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner > FORMAT=org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter > # make sure rosjava is on the classpath > ROS_JAVA=`rospack find rosjava`/bin > # the class path requires the ant jar for exceptions > export > CLASSPATH=$CLASSPATH:$ROS_JAVA:$ANT_LIB/ant.jar:$ANT_LIB/ant-junit.jar:$ANT_LIB/junit4.jar:$1 > java $RUNNER $2 formatter=$FORMAT > > As an example, one could execute:   ./junit.sh . pkg.to.class.ClassNameTest > Aaron Holroyd > B.S. Computer Science and Robotics Engineering > WPI M.S. CS 2011 > http://users.wpi.edu/~aholroyd > > > On Tue, Jul 13, 2010 at 14:19, Ken Conley wrote: >> >> You shouldn't have to use the ant command-line tool. Instead, you >> should just be able to use Ant's classes to generate the XML files >> (the XML format is actually an Ant Junit format). >> >> The class you probably want is: >> >> org.apache.tools.ant.taskdefs.optional.junit.XMLJUnitResultFormatter >> >> You can probably plug this in as a formatter of: >> >> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner >> >> though that's just from scanning the source code; I haven't tried this >> myself yet. >> >> Both JUnit and Ant are open-source projects, so it should be fairly >> easy to orchestrate the desired behavior. >> >> Hope this helps, >> Ken >> >> On Tue, Jul 13, 2010 at 9:09 AM, Aaron Holroyd wrote: >> > Hi again, >> > I have some updates about the JUnit testing from below. >> > After some searching, and talking to someone who works closely with >> > JUnit, >> > I've found that I can not export an XML report directly from a JUnit >> > call. >> >  Instead I have to call ant and export it from there. >> > This gives me 2 questions: >> > 1) In order to write this I would have to invoke ant with a premade ant >> > file >> > which takes as arguments the classes to test.  This itself is not hard, >> > but >> > does this sound like a good solution? I would just have to add an ant >> > build >> > file to a known directory. >> > 2) If I write this and create a patch, is it ok to add ant to the >> > dependencies list for ros, or just for rosjava, or where would this go? >> >  Which leads to  should this be written in the rosjava CMake file, or in >> > the >> > main public / private cmake files in rosbuild? >> > I also, probably, will need help eventually with the CMake files, but >> > I'll >> > try them on my own first.  I simply have never written CMake, before I >> > started using ROS. >> > Thanks again, >> > Aaron Holroyd >> > B.S. Computer Science and Robotics Engineering >> > WPI M.S. CS 2011 >> > http://users.wpi.edu/~aholroyd >> > >> > >> > On Tue, Jul 6, 2010 at 16:20, Aaron Holroyd wrote: >> >> >> >> I'll take a look at how to add Java JUnit testing to the rosbuild cmake >> >> files first.  Whether I get it to work or not, I'll let you know how it >> >> goes. >> >> >> >> As for rostest, I had seen this, but I noticed that it is for C++ and >> >> Python only.  Once I get CMake JUnit testing  to work the rostest >> >> should be >> >> fairly straight forward. >> >> Aaron Holroyd >> >> B.S. Computer Science and Robotics Engineering >> >> WPI M.S. CS 2011 >> >> http://users.wpi.edu/~aholroyd >> >> >> >> >> >> On Tue, Jul 6, 2010 at 14:04, Brian Gerkey >> >> wrote: >> >>> >> >>> On Tue, Jul 6, 2010 at 7:12 AM, Aaron Holroyd >> >>> wrote: >> >>> > I would like to start writing some test cases for rosjava code I >> >>> > have >> >>> > written.  Unfortunately, I can't seem to figure out how this should >> >>> > be >> >>> > done >> >>> > with ROS. >> >>> > I've been using Eclipse for my development, and I could continue to >> >>> > just use >> >>> > it's built in testing environment.  The only problem with this is >> >>> > that >> >>> > when >> >>> > the code is released, the test cases won't work.  Are there any >> >>> > other >> >>> > suggestions, or a preferred way to do this? >> >>> >> >>> hi Aaron, >> >>> >> >>> I don't know enough about Eclipse to give a recommendation there, but >> >>> there are two ways that you can test your code at the command-line: >> >>> >> >>> (1) Use rostest (http://www.ros.org/wiki/rostest).  It allows you to >> >>> bring up a ROS network, then use a program to run tests against that >> >>> network. >> >>> >> >>> (2) Write standalone unit tests.  The ROS build system has support for >> >>> running C/C++ (gtest) and Python (pyunit) tests.  We don't yet have >> >>> support for Java, which I guess would use JUnit.  It should be easy to >> >>> add support.  Look in rosbuild/public.cmake and rosbuild/private.cmake >> >>> for how it's done for the other languages.  Essentially, you need to >> >>> know the command-line that's required to invoke your compiled test >> >>> program, including redirection of test results to a particular >> >>> location.  I can help with the CMake integration if you want. >> >>> >> >>> Note that, for (1), if you want to write the test program itself in >> >>> Java, then you'll also need the new JUnit support described in (2) >> >>> (you could write test programs in Python or C++ using the current >> >>> infrastructure). >> >>> >> >>>        brian. >> >> >> > >> > >> > _______________________________________________ >> > ros-users mailing list >> > ros-users@code.ros.org >> > https://code.ros.org/mailman/listinfo/ros-users >> > >> > >> _______________________________________________ >> ros-users mailing list >> ros-users@code.ros.org >> https://code.ros.org/mailman/listinfo/ros-users > >