[CMake] Need advice for unit test structure

Daniel Blezek Blezek.Daniel at mayo.edu
Thu Apr 2 17:03:14 EDT 2009


Hi Robert,

  I don¹t have any suggestions about the compile time unit tests, but we¹ve
been using the Google testing framework for the last 6 months and have been
very happy with it.  I wrote up some details related to ITK here:

http://www.itk.org/Wiki/Proposals:Increasing_ITK_Code_Coverage#Google_Test

You can have multiple tests embedded in one executable, which is what the
gtest framework does.

Best regards,
-dan 


On 4/2/09 3:00 PM, "Robert Dailey" <rcdailey at gmail.com> wrote:

> Hi,
> 
> Currently we have a directory called "test" under each project we have. Each
> source file (CPP) results in 1 unit test project being created. So if we have
> a project named "foobar", it would be structured like this on the filesystem:
> 
> foobar/test/test1.cpp
> foobar/test/test2.cpp
> foobar/test/test3.cpp
> 
> And the generated visual studio projects (when created via CMake) would be:
> 
> foobar
> foobar_test1
> foobar_test2
> foobar_test3
> 
> Obviously this creates a lot of clutter in the solution explorer window in
> Visual Studio. Is there a more recommended practice for structuring unit tests
> in CMake? Personal advice is also welcome. One approach I'd like to take is
> where we only have two projects:
> 
> foobar
> foobar_test
> 
> And inside foobar_test, all of the sources under the /test/ directory would be
> included, so a single project compiles all unit tests.
> 
> foobar_test
>   test1.cpp
>   test2.cpp
>   test3.cpp
> 
> However, the reason why I'm currently not doing this is because of
> compile-time unit testing. Basically, some unit tests are designed to be
> successful if they fail to compile. For example, perhaps certain template
> parameters do not meet the requirements of a specific C++ concept, and thus
> rightfully fail. This unit test would be considered successful because we want
> to make sure that ONLY types matching this specific concept are accepted by
> the compiler.
> 
> If we include these source files in the same project, then it interrupts the
> whole compilation process. They have to be separate in order to work properly.
> 
> 
> _______________________________________________
> Powered by www.kitware.com
> 
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
> 
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
> 
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake

-- 
Daniel Blezek, PhD
Medical Imaging Informatics Innovation Center

P 127 or (77) 8 8886
T 507 538 8886
E blezek.daniel at mayo.edu

Mayo Clinic
200 First St. S.W.
Harwick SL-44
Rochester, MN 55905
mayoclinic.org


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20090402/597362bd/attachment.htm>


More information about the CMake mailing list