--- Jonathan Swartz <[EMAIL PROTECTED]> wrote:

> I'm wondering if any Test::Class (or Test::Unit, etc.) users out  
> there have yearned for a more convenient way to specify which classes
 
> and methods to run, and if there's any reasonable way to add this  
> capability to prove, given that the options would make no sense for  
> traditional non-class tests.

Unless Test::Unit has changed recently, I wouldn't use it.  As I
recall, it was an interesting attempt to port xUnit style tests to
Perl.  As a result, it cannot take advantage of the large set of
testing module we have on the CPAN.  Has this changed?

As for running an individual test method, I use the following mapping
in vim:

  noremap ,tm ?^sub.*:.*Test<cr>w"zyeOBEGIN { $ENV{TEST_METHOD} =
'<c-r>z' }<esc>

I explain how it works at:

  http://use.perl.org/~Ovid/journal/33567

As for running an individual test class, many people make their driver
script the following:

  #!/usr/bin/perl

  use strict;
  use warnings;
  use Test::Class::Load 't/tests';
  Test::Class->runtests;

However, a better strategy is to *remove* that runtests() method call
and put it in the INIT block of your base class for your tests.  A
simple one would look like this:

  package My::Test::Class;

  use strict;
  use warnings;

  use base 'Test::Class';
  INIT { Test::Class->runtests }

  # season to taste

  1;

Then you can run an individual test class (named, for example,
Tests::My::Customer) with something like this:

  prove -l -It/lib -It/tests/ t/tests/Tests/My/Customer.pm  

If the runtests call is in the driver script, then only that script can
run your tests.  Pull it out and put it in your base class and life is
good :)

You can read more about this with 'perldoc Test::Class::Load'.

Cheers,
Ovid

--
Buy the book  - http://www.oreilly.com/catalog/perlhks/
Perl and CGI  - http://users.easystreet.com/ovid/cgi_course/
Personal blog - http://publius-ovidius.livejournal.com/
Tech blog     - http://use.perl.org/~Ovid/journal/

Reply via email to