I have been developing an internal framework which is designed with bunch of Perl modules. All these modules are dependent on a single module that exposes some Win32 functionality. For e.g. A, B, C, D, etc modules all depend on a single module Z. So all these modules will import by “use MyFramework::Z”. All these modules A,B,C etc can be used individually & arenot dependent on any other framework modules.
Now, with that simple design in mind – how do I design my unit tests. I am planning to use Test::More to do all the unit tests. Should I write individual unit tests for each module? There are 25 different modules that belong to this framework. Any suggestions?
Unit tests for
Zshould cover the Win32 functionality.Unit tests for
Ashould cover the functionality ofAthat isn’t covered inZ.Repeat for
B,C,D, and so on.If you find that
C,E, andGare doing similar things and you are writing nearly identical unit tests, that is the signal to refactor — extract common components up to a higher level (e.g., moduleCEG) and just leave and test the special parts ofC,E, andGin their original modules.