[vtk-developers] C++ unit tests

David Thompson david.thompson at kitware.com
Tue Jul 28 13:34:52 EDT 2015


Hi David(s),

I really like the single-header idea, especially the macros for testing whether values match to within a tolerance.

My concerns are

1. The C++ Testing/Rendering/vtkTesting.h class which provides (or now that we have ExternalData, provided?) access to baseline images doesn't seem to fit into the FIXTURE macro. Is there a way to integrate it? Or a way to extend the vtkTesting class to be more usable by including methods similar to your macros?

2. One thing I dislike about most/all of the C++ test frameworks is that the error messages are assumed to be fixed and the methods often do not present a way to include the incorrect result as part of the failure message. It is nice that your macros include that. However, given that tests often fail on machines I don't have access to, it is really nice to encourage people to write useful messages. Macros like CHECK_CLOSE would be better if they accepted a message as a final argument, especially if the argument was passed to a std::ostream object the way vtkGenericWarningMacro() does so that people can (are forced to) provide more context about where the two numbers being compared come from.

	David

> On Jul 28, 2015, at 10:43 AM, David Gobbi <david.gobbi at gmail.com> wrote:
> 
> Hi David (and David),
> 
> The only advantage of my unit test header is that it is a single header
> (a short one, too) with zero dependencies.  So it's easy to add to VTK
> and it's trivial to maintain.
> 
> If either of you has a better solution, then go ahead and make a merge
> request.  I'll review it for you ;)
> 
>  - David
> 
> 
> On Tue, Jul 28, 2015 at 8:27 AM, David Thompson <david.thompson at kitware.com> wrote:
> Another project I work on has been using Bandit[1] to good effect.
> 
>         David
> 
> [1]:http://banditcpp.org/reference.html
> 
> On Jul 28, 2015, at 10:01 AM, David Cole via vtk-developers <vtk-developers at vtk.org> wrote:
> 
> > A single header file unit testing solution sounds like a good thing.
> >
> > ... but ... seems like we could also take advantage of a
> > well-established generally used unit testing framework (like gtest or
> > CppUnit) just as easily, and not clutter the VTK source with
> > yet-another-custom-thing-to-learn-about-VTKs-infrastructure.
> >
> > Would it be just as easy to add unit testing using an external unit
> > testing package? Or are there things about that scenario that are
> > overly complicated that having our own makes simpler...?
> >
> >
> > David C.
> >
> >
> >
> > On Mon, Jul 27, 2015 at 5:25 PM, David Gobbi <david.gobbi at gmail.com> wrote:
> >> Hi All,
> >>
> >> I've always enjoyed using the python unit testing framework in "vtk.test".
> >> It's been brought up on the list before, but it would be nice if VTK
> >> included a unit test framework for C++, as well.
> >>
> >> For my work projects, I've been using a unit test header that I wrote a year
> >> and a half ago:
> >> https://github.com/dgobbi/UnitTest/blob/master/UnitTest.h
> >>
> >> It's a single header file that provides a collection of macros for building
> >> unit tests, it's meant to be innocuous and easy to use.  It could go into
> >> VTK as Testing/Core/vtkUnitTest.h and people could use it at their leisure.
> >>
> >> Any thoughts?
> >>
> >> - David
> 
> 



More information about the vtk-developers mailing list