2009-08-27T18:02:49 pktmHallo!
Welche Test-Module sind empfehlenswert?
QuoteWie aber schreibt man Tests?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sidburn@sid:~/perl$ module-starter --distro=Point --module=Point --mb --author="David Raab" --email="perl@david-raab.de" --license=mit
Created starter directories and files
sidburn@sid:~/perl$ cd Point/
sidburn@sid:~/perl/Point$ find
.
./Makefile.PL
./Changes
./t
./t/00.load.t
./t/pod.t
./t/pod-coverage.t
./t/perlcritic.t
./lib
./lib/Point.pm
./MANIFEST
./Build.PL
./README
./ignore.txt
1 2 3 4 5 6 7 8 9 10 11
package Point; use MooseX::Declare; our $VERSION = '0.001000'; $VERSION = eval $VERSION; class Point { has 'x' => ( is => 'ro', isa => 'Int', required => 1 ); has 'y' => ( is => 'ro', isa => 'Int', required => 1 ); } 1;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
use Test::Most qw(defer_plan die); BEGIN { use_ok('Point') } my $point; lives_ok { $point = Point->new( x => 100, y => 200 ); } 'check Point creation'; cmp_ok( $point->x, '==', 100, 'x is 100' ); cmp_ok( $point->y, '==', 200, 'y is 200' ); dies_ok { Point->new() } 'die because x, y forgotten'; dies_ok { Point->new(x=>10) } 'die because y forgotten'; dies_ok { Point->new(y=>10) } 'die because x forgotten'; all_done();
prove -l -v t/01.point.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sidburn@sid:~/perl/Point$ prove -l -v t/01-point.t
t/01-point.t ..
ok 1 - use Point;
ok 2 - check Point creation
ok 3 - x is 100
ok 4 - y is 200
ok 5 - die because x, y forgotten
ok 6 - die because y forgotten
ok 7 - die because x forgotten
1..7
ok
All tests successful.
Files=1, Tests=7, 1 wallclock secs ( 0.02 usr 0.00 sys + 0.82 cusr 0.04 csys = 0.88 CPU)
Result: PASS
Quotesid, du editierst deine beiträge wirklich oft und oft lange nach dem erstellen. kannst du bitte dazuschreiben, was du änderst?
QuoteWir haben also sieben Tests für unser Modul geschrieben und sie sind erfolgreich durchgelaufen.
QuoteAnsonsten habe ich nur die Bereiche zum Testen erklärt, für eine komplette Distribution gehört mehr dazu, z.B. solltest du in Build.PL eintragen welche Module du nutzt. Ansonsten gibt dir Module::Build auch mehr funktionalitäten. Auf ein Buildsystem solltest du aber generell schon aufsetzen.
2009-08-28T19:35:23 LanX-Also als ich letztes mal hier war hörte der Post IMHO kurz hinter Test::Class auf ... kann das sein?
QuoteWenn du gelesen werden möchtest solltest du erwägen einen neuen Post für Anhänge zu schreiben, ohne pq's antwort wär ich nicht wieder hierher gekommen.
QuoteMal Allgemein:
Da du eh die Tendenz hast viele Gedanken in einen Post zu packen würde das auch der Strukturierung dienen und das ganze lesbarer machen. (keine Kritik sondern Anregung)
QuoteMotivation: Ich hab letztens sehr lange gebraucht um mir einen Split-Titel für einen deiner Posts auszudenken.
2009-08-28T20:02:36 sid burnNa immerhin verblödet man nicht bei meinen Posts. ;)
QuoteNa immerhin verblödet man nicht bei meinen Posts. ;)
2009-09-04T08:25:13 bloonixQuoteNa immerhin verblödet man nicht bei meinen Posts. ;)
Nein, aber dach 50% - gefühlte länge von Herr der Ringe 1-3 - schläft man ein.