Warnungen bei Test anfangen
Chris
- perl
Guten Morgen!
Fuer meine Module verwende ich gerne Test::More und aehnliches um ordentliche Tests machen zu koennen.
Nun habe ich den Fall, dass eine der zu testenden Funktionen eine Warnung ausgibt und undef liefert, falls bestimmte Parameter ungueltige Werte haben. Der Vollstaendigkeit halber moechte ich auch dieses testen. Die Warnungen erscheinen natuerlich inmitten der Ausgabe von Test::More, der Test auf undef ist positiv:
chris@hapi:~/test-module$ perl -wTI. t/mein_test.t
1\..14
W **** $from muss 'bib-id', 'eln' oder 'sigel' sein. at Modul.pm line 98.
ok 1 - asdf -> ELN
W **** $to muss 'bib-id', 'eln', 'sigel' oder 'name' sein. at Modul.pm line 102.
ok 2 - ELN -> asdf
Es funktioniert zwar, sieht aber haesslich aus und wirkt natuerlich befremdlich, wenn jemand anders den Test ausfuehrt.
Kann man die Warnungen irgendwie abfangen? Oder sollte ich so etwas gar nicht testen? In der Hilfe zu der Test::-Suite bin ich leider nicht fuendig geworden.
Viele Gruesse
Christian
Moin Moin!
Ich würde es ungefähr so anfangen (ungetestet):
{
my $w='';
local $SIG{__WARN__}=sub { $w.=join(' ',@_) };
is(AnswerToTheUltimateQuestionOfLifeTheUniverseAndEverything(),42,'Answer ok');
is($w,'Stupid idea','Proper warning');
}
Allerdings dürfte Test::Warn einfacher sein.
Alexander