Core Testing Tools
Diagnostic Messages
Diagnostics add context that helps explain why a test failed.
diagnostics
A diagnostic line should be specific enough to help without changing the result of the test itself.
Diagnostic Messages
diagnostic_messages.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
my $age = -1;
my $valid = $age >= 0;
my $status = $valid ? "ok" : "not ok";
my $diag = $valid ? "none" : "age must be nonnegative";
print "age=$age\n";
print "status=$status\n";
print "diag=$diag\n";
use strict;
use warnings;
my $age = 0;
my $valid = $age >= 0;
my $status = $valid ? "ok" : "not ok";
my $diag = $valid ? "none" : "age must be nonnegative";
print "age=$age\n";
print "status=$status\n";
print "diag=$diag\n";
use strict;
use warnings;
my $age = 21;
my $valid = $age >= 0;
my $status = $valid ? "ok" : "not ok";
my $diag = $valid ? "none" : "age must be nonnegative";
print "age=$age\n";
print "status=$status\n";
print "diag=$diag\n";
$age ← -1, $valid ← (empty), $status ← not ok, $diag ← age must be nonnegative
4my $age→ -1 = -1; #@age=21, 05my $valid→ (empty) = $age-1 >= 0;6my $status→ not ok = $valid(empty) ? "ok" : "not ok";7my $diag→ age must be nonnegative = $valid(empty) ? "none" : "age must be nonnegative";89print "age=$age-1\n";10print "status=$statusnot ok\n";11print "diag=$diagage must be nonnegative\n";outputage=-1 status=not ok diag=age must be nonnegative
$age ← 0, $valid ← 1, $status ← ok, $diag ← none
4my $age→ 0 = 0;5my $valid→ 1 = $age0 >= 0;6my $status→ ok = $valid1 ? "ok" : "not ok";7my $diag→ none = $valid1 ? "none" : "age must be nonnegative";89print "age=$age0\n";10print "status=$statusok\n";11print "diag=$diagnone\n";outputage=0 status=ok diag=none
$age ← 21, $valid ← 1, $status ← ok, $diag ← none
4my $age→ 21 = 21;5my $valid→ 1 = $age21 >= 0;6my $status→ ok = $valid1 ? "ok" : "not ok";7my $diag→ none = $valid1 ? "none" : "age must be nonnegative";89print "age=$age21\n";10print "status=$statusok\n";11print "diag=$diagnone\n";outputage=21 status=ok diag=none