Ćwiczę, aby utworzyć nowy moduł przy użyciu Module :: Starter. Napisałem kilka przypadków testowych dla pakietu i czasami działają OK.Jak mogę debugować moduł wykonany przez Module :: Starter?
Jednak zauważyłem, istnieją dwa problemy:
Kiedy przypadki testowe nie chcę umieścić kilka wypowiedzi funkcja drukowania w fazie testów. Uruchomiłem
make test
i to tylko mówi mi, że moje przypadki testowe nie powiodły się, nie pokazuje mojego wydrukowanego wyjścia, pomimo tego jestem naprawdę pewien, że osiągnięto wyciągi.Powiedz, że mam trzy przypadki testowe do przetestowania jednej funkcji, umieszczam instrukcję drukowania wewnątrz funkcji, gdy uruchamiane są przypadki testowe, raportuje, że tylko jeden z trzech przypadków testowych został uruchomiony. Jeśli usuniemy instrukcję drukowania, wszystkie trzy przypadki testowe zostaną uruchomione. Dlaczego?
Oto mój kod:
# package declaration and stuff...
sub get_in {
my ($hash, @path) = @_;
my $ref = $hash;
print 'lol'; # This is the troublesome print statement. Remove this statement and all three test cases will run and pass
foreach (@path) {
if (ref($ref) eq 'HASH' && exists $ref->{$_}) {
$ref = $ref->{$_};
} else {
return undef;
}
}
return $ref;
}
to przypadki testowe:
use Test::More tests => 3;
use strict;
use warnings;
use diagnostics;
require_ok('Foo::Doc');
ok(Foo::Doc::get_in({ 'a' => { 'b' => { 'c' => 101 } } }, 'a', 'b', 'c') == 101);
ok(@{ Foo::Doc::get_in({ 'a' => { 'b' => { 'c' => [ 1, 2, 3 ] } } }, 'a', 'b', 'c') } == @{ [ 1, 2, 3 ] });
To pytanie nie jest naprawdę specyficzne dla Module :: Starter. Standardowy układ projektu Perl zawiera katalog 't' z testami' * .t' przy użyciu Testu :: Prostego lub Testu :: Więcej lub niektóre z nich, aby uzyskać sukces lub niepowodzenie testu. Każdy zestaw narzędzi do tworzenia Perla udostępnia narzędzia do uruchamiania testów i wyprowadzania wyników w standardowym raporcie za pomocą narzędzi dostarczonych w rdzeniu Perla. – zostay