Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Test::Kit 2.0 
custom test modules with the features you want 
Alex Balhatchet @ YAPC::EU 2014, София България
Test::Kit
Creating your Kit
Creating your Kit 
package MyProject::Test; 
use Test::Kit;
Creating your Kit 
package MyProject::Test; 
use Test::Kit; 
# Combine multiple modules' behaviour into one 
include 'Test::More'; 
include 'Test::LongString';
Creating your Kit 
package MyProject::Test; 
use Test::Kit; 
# Combine multiple modules' behaviour into one 
include 'Test::More'; 
include 'Test::LongString'; 
# Exclude or rename exported subs 
include 'Test::Warn' => { 
exclude => [ 'warning_is' ], 
renamed => { 
'warning_like' => 'test_warn_warning_like' 
}, 
};
Creating your Kit 
package MyProject::Test; 
use Test::Kit; 
# Combine multiple modules' behaviour into one 
include 'Test::More'; 
include 'Test::LongString'; 
# Exclude or rename exported subs 
include 'Test::Warn' => { 
exclude => [ 'warning_is' ], 
renamed => { 
'warning_like' => 'test_warn_warning_like' 
}, 
}; 
# Pass parameters through to import() directly 
include 'List::Util' => { 
import => [ 'min', 'max', 'shuffle' ], 
};
Creating your Kit 
package MyProject::Test; 
use Test::Kit; 
# Combine multiple modules' behaviour into one 
include 'Test::More'; 
include 'Test::LongString'; 
# Exclude or rename exported subs 
include 'Test::Warn' => { 
exclude => [ 'warning_is' ], 
renamed => { 
'warning_like' => 'test_warn_warning_like' 
}, 
}; 
# Pass parameters through to import() directly 
include 'List::Util' => { 
import => [ 'min', 'max', 'shuffle' ], 
};
Using your Kit
Using your Kit 
use strict; 
use warnings; 
use MyProject::Test tests => 4;
Using your Kit 
use strict; 
use warnings; 
use MyProject::Test tests => 4; 
ok 1, "1 is true"; 
like_string( 
`cat /usr/share/dict/words`, 
qr/^ kit $/imsx, 
"kit is a word" 
);
Using your Kit 
use strict; 
use warnings; 
use MyProject::Test tests => 4; 
ok 1, "1 is true"; 
like_string( 
`cat /usr/share/dict/words`, 
qr/^ kit $/imsx, 
"kit is a word" 
); 
test_warn_warning_like { 
warn "foo"; 
} 
qr/FOO/i, 
"warned foo";
Using your Kit 
use strict; 
use warnings; 
use MyProject::Test tests => 4; 
ok 1, "1 is true"; 
like_string( 
`cat /usr/share/dict/words`, 
qr/^ kit $/imsx, 
"kit is a word" 
); 
test_warn_warning_like { 
warn "foo"; 
} 
qr/FOO/i, 
"warned foo"; 
is max(qw(1 2 3 4 5)), 5, 'maximum is 5';
Using your Kit 
use strict; 
use warnings; 
use MyProject::Test tests => 4; 
ok 1, "1 is true"; 
like_string( 
`cat /usr/share/dict/words`, 
qr/^ kit $/imsx, 
"kit is a word" 
); 
test_warn_warning_like { 
warn "foo"; 
} 
qr/FOO/i, 
"warned foo"; 
is max(qw(1 2 3 4 5)), 5, 'maximum is 5';
Why?
Destroy Boilerplate 
1322 files changed, 
2325 insertions(+), 
7549 deletions(-)
More consistency 
Test::MockModule vs 
Test::MockObject::Extends 
Test::NoWarnings vs Test::FailWarnings 
Test::Exception vs Test::Fatal
Add behaviour to all tests 
binmode Test::More->builder->output, ":encoding(utf8)"; 
binmode Test::More->builder->failure_output, ":encoding(utf8)"; 
binmode Test::More->builder->todo_output, ":encoding(utf8)";
Upcoming 
Changes...
Test::Builder is changing!
Test::Kit is changing! 
● New release of Test::Kit coming soon 
● Will work with new and old Test::Builder 
● Should continue to just work!
Give it a go 
:-)

More Related Content

Test Kit 2.0 YAPC::EU 2014 Lightning Talk

  • 1. Test::Kit 2.0 custom test modules with the features you want Alex Balhatchet @ YAPC::EU 2014, София България
  • 4. Creating your Kit package MyProject::Test; use Test::Kit;
  • 5. Creating your Kit package MyProject::Test; use Test::Kit; # Combine multiple modules' behaviour into one include 'Test::More'; include 'Test::LongString';
  • 6. Creating your Kit package MyProject::Test; use Test::Kit; # Combine multiple modules' behaviour into one include 'Test::More'; include 'Test::LongString'; # Exclude or rename exported subs include 'Test::Warn' => { exclude => [ 'warning_is' ], renamed => { 'warning_like' => 'test_warn_warning_like' }, };
  • 7. Creating your Kit package MyProject::Test; use Test::Kit; # Combine multiple modules' behaviour into one include 'Test::More'; include 'Test::LongString'; # Exclude or rename exported subs include 'Test::Warn' => { exclude => [ 'warning_is' ], renamed => { 'warning_like' => 'test_warn_warning_like' }, }; # Pass parameters through to import() directly include 'List::Util' => { import => [ 'min', 'max', 'shuffle' ], };
  • 8. Creating your Kit package MyProject::Test; use Test::Kit; # Combine multiple modules' behaviour into one include 'Test::More'; include 'Test::LongString'; # Exclude or rename exported subs include 'Test::Warn' => { exclude => [ 'warning_is' ], renamed => { 'warning_like' => 'test_warn_warning_like' }, }; # Pass parameters through to import() directly include 'List::Util' => { import => [ 'min', 'max', 'shuffle' ], };
  • 10. Using your Kit use strict; use warnings; use MyProject::Test tests => 4;
  • 11. Using your Kit use strict; use warnings; use MyProject::Test tests => 4; ok 1, "1 is true"; like_string( `cat /usr/share/dict/words`, qr/^ kit $/imsx, "kit is a word" );
  • 12. Using your Kit use strict; use warnings; use MyProject::Test tests => 4; ok 1, "1 is true"; like_string( `cat /usr/share/dict/words`, qr/^ kit $/imsx, "kit is a word" ); test_warn_warning_like { warn "foo"; } qr/FOO/i, "warned foo";
  • 13. Using your Kit use strict; use warnings; use MyProject::Test tests => 4; ok 1, "1 is true"; like_string( `cat /usr/share/dict/words`, qr/^ kit $/imsx, "kit is a word" ); test_warn_warning_like { warn "foo"; } qr/FOO/i, "warned foo"; is max(qw(1 2 3 4 5)), 5, 'maximum is 5';
  • 14. Using your Kit use strict; use warnings; use MyProject::Test tests => 4; ok 1, "1 is true"; like_string( `cat /usr/share/dict/words`, qr/^ kit $/imsx, "kit is a word" ); test_warn_warning_like { warn "foo"; } qr/FOO/i, "warned foo"; is max(qw(1 2 3 4 5)), 5, 'maximum is 5';
  • 15. Why?
  • 16. Destroy Boilerplate 1322 files changed, 2325 insertions(+), 7549 deletions(-)
  • 17. More consistency Test::MockModule vs Test::MockObject::Extends Test::NoWarnings vs Test::FailWarnings Test::Exception vs Test::Fatal
  • 18. Add behaviour to all tests binmode Test::More->builder->output, ":encoding(utf8)"; binmode Test::More->builder->failure_output, ":encoding(utf8)"; binmode Test::More->builder->todo_output, ":encoding(utf8)";
  • 21. Test::Kit is changing! ● New release of Test::Kit coming soon ● Will work with new and old Test::Builder ● Should continue to just work!
  • 22. Give it a go :-)