|Think about Loose Coupling|
I am tending toward the recommends section.
My advice is to use the "build_requires" section for anything used in testing that isn't too obscure or hard to install. The problem with "recommends" is that it suggests things that should be installed and modules to only support testing don't need to be installed.
That said, if you have too many obscure Test::* modules in your build_requires, you increase the chance that someone fails to build and test your module due to a dependency failure. If you guard every Test::* module with eval, then that's not a problem, but that's a lot of work.
Personally, I use "build_requires" for just about everything and only guard with eval a handful of more obscure dependencies that don't really impact the effectiveness of testing or are platform-specific.
You're welcome to browse my distributions for examples. Most of them use Build.PL
Code written by xdg and posted on PerlMonks is public domain. It is provided as is with no warranties, express or implied, of any kind. Posted code may not have been tested. Use of posted code is at your own risk.