Visual Studio 2008, in the pricier editions, has rich support for automated unit testing – of “managed” code units.  Not much help with 4 million lines of native code!

 

I’ve set up unit test projects within my overall solution.  These build executables from source (using boost-test’s default main() ) and run them using custom build step scripts.  It’s simple and it works but it does not tie into the test automation infrastructure.  Test failures show up as build failures, and there’s no direct support for things like test coverage analysis.

 

It turns out, however, that if what you want to test has a COM or .NET interface, you can write a C# (or managed C++) test driver, reference the interface exported by the native code, and test away.  But that doesn’t help you unit test traditional libraries.

 

What I’d like to do is to develop a .NET-visible wrapper for a boost-test unit test driver.  This would allow us to author the actual tests in native C++ using boost-test, build and run the test suite as before if desired.  We could, for instance, execute the test driver under the debugger to investigate a failure.  But we could also drive the tests from a Visual Studio Test project.  The simple thing to do would be to make each native test driver (with its entire suite of tests) one Studio-level test.  It might be possible to expose the internal boost-test suite structure to the wrapper so the individual tests show up in the database; I’m not sure this is desirable and it would be more work.

 

My main purpose in posting this note is to see if anybody out there is interested in working with me on this.  Secondarily, I’d appreciate any advice from those more familiar with the guts of boost-test.  What is the best place to hook in and what features does the exported interface (object model) need to expose?

 

Because this effort targets special features found only in high-end versions of visual studio, it will not be of much interest to the majority of the readers of this list.  I suggest folks send me email directly unless you think everyone needs to see it.

 

-swn