I really liked the Test::Inline
module, but when I looked at it a bit closer I found that it only worked one file at a time, and it was fairly limited in what it could do.
So about a year ago I set out to write a better and more enterprisey version, which I've been using in my company
's code generation system and gradually evolving towards perfection.
It's finally reaching the point where I can't think of anything else that it needs, and so I'm hoping to release it some time soon.
To give you a sneak preview, Test::Inline 2 will let you define things like this.
=begin testing method after othermethod Needed::Module 25
25 tests here
The test compiler supports per-method and per-class dependencies to help control the test execution order and make sure that the first error you encounter is more likely to be the root error.
It also support per-section and entire-script test counting, and can recursively slurp in entire trees of code, producing test scripts on a per-class basis, so that if you have a large file with multiple classes, you get one test script per class still.
My largest current use in the code generation system reads in about 50-100 modules and produces around 5000 lines of test code. About 11,000 test vectors.
I've become so addicted to the ease of testing it has provided me, I can't see myself going without it ever again for a large project.