> So, does this look useful for folks? Is there anything you would change? > (It's trivial to assert plans for classes and the entire test suite rather > than rely on done_testing(), but I haven't done that yet).
I would welcome it as an option. We use Test::Class now, but I have the sense that there's a better alternative. We have started to load Moose in most cases, so there's no additional load time penalty for Moose since it's already there. Some things I like from some alternatives (from reviewing them, not using them): I like the declarative style and simple nesting of Test::Spec: https://metacpan.org/module/Test::Spec describe "A User object" => sub { my $user; before sub { $user = User->new; }; describe "from a web form" => sub { before sub { $user->init_from_tree({ username => "bbill", ... }); }; it "should read its attributes from the form"; describe "when saving" => sub { it "should require a unique username"; it "should require a password"; }; }; }; Test::Ika has a similar spirit, but with an option for very readable output: describe 'MessageFilter' => sub { my $filter; before_each { $filter = MessageFilter->new(); }; it 'should detect message with NG word' => sub { my $filter = MessageFilter->new('foo'); expect($filter->detect('hello foo'))->ok; }; it 'should detect message with NG word' => sub { my $filter = MessageFilter->new('foo'); expect($filter->detect('hello foo'))->ok; }; }; Check out the TAP-alternative output here: https://metacpan.org/module/Test::Ika This is a good idea that I expect to spread: Generating TAP for test harnesses, but more a readable format when the target is a human reader. However, I think if I just wanted to mash-up Test::Class and Moose, I would do something more like this: package Test::Class::Moose; use Moose; use MooseX::NonMoose; extends 'Test::Class'; #### That way I would have to update our hundreds of test scripts to use a new syntax. :) If your project is to be considered a path forward from Test::Class but with an incompatible syntax, it would be great if it came with a script to find/replace the old syntax with the replacement. Mark