Mercurial > public > pelican-blog
diff content/Coding/004-fructose-contrib.rst @ 4:7ce6393e6d30
Adding converted blog posts from old blog.
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Thu, 30 Jan 2014 21:45:03 -0600 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/content/Coding/004-fructose-contrib.rst Thu Jan 30 21:45:03 2014 -0600 @@ -0,0 +1,42 @@ +I contributed to Fructose +######################### + +:date: 2011-05-31 21:40 +:tags: Fructose, C++, Python, UnitTesting +:slug: i-contributed-to-fructose +:author: Brian Neal + +At work we started using CxxTest_ as our unit testing framework. We like it because +it is very light-weight and easy to use. We've gotten a tremendous amount of benefit +from using a unit testing framework, much more than I had ever imagined. We now have +almost 700 tests, and I cannot imagine going back to the days of no unit tests or ad-hoc +testing. It is incredibly reassuring to see all the tests pass after making a significant +change to the code base. There is no doubt in my mind that our software-hardware integration +phases have gone much smoother thanks to our unit tests. + +Sadly it seems CxxTest is no longer actively supported. However this is not of great +concern to us. The code is so small we are fairly confident we could tweak it if necessary. + +I recently discovered Fructose_, a unit testing framework written by Andrew Marlow. It too +has similar goals of being small and simple to use. One thing I noticed that CxxTest had that +Fructose did not was a Python code generator that took care of creating the ``main()`` function +and registering all the tests with the framework. Since C++ has very little introspection +capabilities, C++ unit testing frameworks have historically laid the burden of registering +tests on the programmer. Some use macros to help with this chore, but littering your code +with ugly macros makes tests annoying to write. And if anything, you want your tests to be +easy to write so your colleagues will write lots of tests. CxxTest approached this problem by +providing first a Perl script, then later a Python script, to automate this part of the process. + +I decided it would be interesting to see if I could provide such a script for Fructose. After +a Saturday of hacking, I'm happy to say Andrew has accepted the script and it now ships with +Fructose version 1.1.0. I hope to improve the script to not only run all the tests but to also +print out a summary of the number of tests that passed and failed at the end, much like CxxTest does. +This will require some changes to the C++ code. Also on my wish list is to make the script +extensible, so that others can easily change the output and code generation to suit their needs. + +I've hosted the code for the Python script, which I call ``fructose_gen.py`` on Bitbucket_. +Feedback is greatly appreciated. + +.. _CxxTest: http://cxxtest.tigris.org/ +.. _Fructose: http://fructose.sourceforge.net/ +.. _Bitbucket: https://bitbucket.org/bgneal/fructose_gen/src