[CMake] Need advice for unit test structure

Robert Dailey rcdailey at gmail.com
Thu Apr 2 17:07:33 EDT 2009


If there was some way for CMake to utilize "solution folders" in Visual
Studio, we could easily organize unit tests into a hierarchy. This way the
solution explorer would not be cluttered and we'd still be able to have 1
project per unit test.

On Thu, Apr 2, 2009 at 4:03 PM, Daniel Blezek <Blezek.Daniel at mayo.edu>wrote:

>  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/7317a40f/attachment-0001.htm>


More information about the CMake mailing list