22
Test::Kit 2.0 custom test modules with the features you want Alex Balhatchet @ YAPC::EU 2014, София България

Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Embed Size (px)

DESCRIPTION

A five minute introduction to using the Test::Kit module to bundle testing modules together, and why you might want to do that.

Citation preview

Page 1: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Test::Kit 2.0custom test modules with the features you want

Alex Balhatchet @ YAPC::EU 2014, София България

Page 2: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Test::Kit

Page 3: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Creating your Kit

Page 4: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Creating your Kitpackage MyProject::Test;

use Test::Kit;

Page 5: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Creating your Kitpackage MyProject::Test;

use Test::Kit;

# Combine multiple modules' behaviour into one include 'Test::More';include 'Test::LongString';

Page 6: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Creating your Kitpackage 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' },};

Page 7: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Creating your Kitpackage 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' ],};

Page 8: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Creating your Kitpackage 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' ],};

Page 9: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Using your Kit

Page 10: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Using your Kituse strict;use warnings; use MyProject::Test tests => 4;

Page 11: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Using your Kituse 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");

Page 12: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Using your Kituse 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";

Page 13: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Using your Kituse 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';

Page 14: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Using your Kituse 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';

Page 15: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Why?

Page 16: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Destroy Boilerplate

1322 files changed, 2325 insertions(+), 7549 deletions(-)

Page 17: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

More consistency

Test::MockModule vsTest::MockObject::Extends

Test::NoWarnings vs Test::FailWarnings

Test::Exception vs Test::Fatal

Page 18: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

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)";

Page 19: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Upcoming Changes...

Page 20: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Test::Builder is changing!

Page 21: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Test::Kit is changing!

● New release of Test::Kit coming soon

● Will work with new and old Test::Builder

● Should continue to just work!

Page 22: Test Kit 2.0 YAPC::EU 2014 Lightning Talk

Give it a go :-)