But most of the redundancy of the tests is actually encapsulated in functions
That sounds fine then.
I do have to disagree that can is not "really calling the interface to my class" though.
It isn't calling the interface. It is calling the can() method which is typically inherited from UNIVERSAL::can(). This will break if you do any sneaky AUTOLOAD stuff. (Sure, you could fix that, but what a waste of time.) It's better to actually call the method you are checking instead.
I suppose that just testing that they are there (can_ok) is good enough. Do you agree?
Yes, for constants. I think it's better to use globals than the subs that the constant pragma creates, but that's a whole other discussion.
In reply to Re: Re: Re: Testaholics Anonymous (or how I learned to stop worrying and love Test::More)