1Test::Assert(3pm) User Contributed Perl Documentation Test::Assert(3pm)
2
3
4
6 Test::Assert - Assertion methods for those who like JUnit.
7
9 # Use as imported methods
10 #
11 package My::Test;
12
13 use Test::Assert ':all';
14
15 assert_true(1, "pass");
16 assert_true(0, "fail");
17
18 use Test::More;
19 assert_test(sub { require_ok($module) });
20
21 # Use for debugging purposes
22 # Assertions are compiled only if Test::Assert was used
23 # from the main package.
24 #
25 package My::Package;
26
27 use Test::Assert ':assert';
28
29 my $state = do_something();
30 assert_true($state >= 1 && $state <=2) if ASSERT;
31 if ($state == 1) {
32 # 1st state
33 do_foo();
34 } elsif ($state == 2) {
35 # 2nd and last state
36 do_bar();
37 }
38
39 my $a = get_a();
40 my $b = get_b();
41 assert_num_not_equals(0, $b) if ASSERT;
42 my $c = $a / $b;
43
44 # Clean the namespace
45 no Test::Assert;
46
47 # From command line
48 $ perl -MTest::Assert script.pl # sets Test::Assert::ASSERT to 1
49
51 This class provides a set of assertion methods useful for writing
52 tests. The API is based on JUnit4 and Test::Unit::Lite and the methods
53 die on failure.
54
55 These assertion methods might be not useful for common
56 Test::Builder-based (Test::Simple, Test::More, etc.) test units.
57
58 The assertion methods can be used in class which is derived from
59 "Test::Assert" or used as standard Perl functions after importing them
60 into user's namespace.
61
62 "Test::Assert" can also wrap standard Test::Simple, Test::More or other
63 Test::Builder-based tests.
64
65 The assertions can be also used for run-time checking.
66
68 Exception::Assertion
69 Thrown whether an assertion failed.
70
72 By default, the class does not export its symbols.
73
74 use Test::Assert;
75 Enables debug mode if it is used in "main" package.
76
77 package main;
78 use Test::Assert; # Test::Assert::ASSERT is set to TRUE
79
80 $ perl -MTest::Assert script.pl # ditto
81
82 use Test::Assert 'assert_true', 'fail', ...;
83 Imports some methods.
84
85 use Test::Assert ':all';
86 Imports all "assert_*" methods, "fail" method and "ASSERT"
87 constant.
88
89 use Test::Assert ':assert';
90 Imports all "assert_*" methods and "ASSERT" constant.
91
92 no Test::Assert;
93 Disables debug mode if it is used in "main" package.
94
96 ASSERT
97 This constant is set to true value if "Test::Assert" module is used
98 from "main" package. It allows to enable debug mode globally from
99 command line. The debug mode is disabled by default.
100
101 package My::Test;
102 use Test::Assert ':assert';
103 assert_true( 0 ) if ASSERT; # fails only if debug mode is enabled
104
105 $ perl -MTest::Assert script.pl # enable debug mode
106
108 fail( message : Str = undef, reason : Str = undef )
109 Immediate fail the test. The Exception::Assertion object will have
110 set message and reason attribute based on arguments.
111
112 assert_true( boolean : Bool, message : Str = undef )
113 Checks if boolean expression returns true value.
114
115 assert_false( boolean : Bool, message : Str = undef )
116 Checks if boolean expression returns false value.
117
118 assert_null( value : Any, message : Str = undef )
119 assert_not_null( value : Any, message : Str = undef )
120 Checks if value is defined or not defined.
121
122 assert_equals( value1 : Defined, value2 : Defined, message : Str =
123 undef )
124 assert_not_equals( value1 : Defined, value2 : Defined, message : Str =
125 undef )
126 Checks if value1 and value2 are equals or not equals. If value1
127 and value2 look like numbers then they are compared with '=='
128 operator, otherwise the string 'eq' operator is used.
129
130 assert_num_equals( value1 : Defined, value2 : Defined, message : Str =
131 undef )
132 assert_num_not_equals( value1 : Defined, value2 : Defined, message :
133 Str = undef )
134 Force numeric comparation.
135
136 assert_str_equals( value1 : Defined, value2 : Defined, message : Str =
137 undef )
138 assert_str_not_equals( value1 : Defined, value2 : Defined, message :
139 Str = undef )
140 Force string comparation.
141
142 assert_matches( regexp : RegexpRef, value : Str, message : Str = undef
143 )
144 assert_not_matches( regexp : RegexpRef, value : Str, message : Str =
145 undef )
146 Checks if value matches pattern regexp.
147
148 assert_deep_equals( value1 : Ref, value2 : Ref, message : Str = undef )
149 assert_deep_not_equals( value1 : Ref, value2 : Ref, message : Str =
150 undef )
151 Checks if reference value1 is a deep copy of reference value2 or
152 not. The references can be deep structure. If they are different,
153 the message will display the place where they start differing.
154
155 assert_isa( class : Str, object : Defined, message : Str = undef )
156 assert_not_isa( class : Str, object : Defined, message : Str = undef )
157 Checks if value is a class or not.
158
159 assert_isa( 'My::Class', $obj );
160
161 assert_raises( expected : Any, code : CodeRef, message : Str = undef )
162 Runs the code and checks if it raises the expected exception.
163
164 If raised exception is an Exception::Base object, the assertion
165 passes if the exception "matches" expected argument (via
166 "Exception::Base->matches" method).
167
168 If raised exception is not an Exception::Base object, several
169 conditions are checked. If expected argument is a string or array
170 reference, the assertion passes if the raised exception is a given
171 class. If the argument is a regexp, the string representation of
172 exception is matched against regexp.
173
174 use Test::Assert 'assert_raises';
175
176 assert_raises( 'foo', sub { die 'foo' } );
177 assert_raises( ['Exception::Base'], sub { Exception::Base->throw } );
178
179 assert_test( code : CodeRef, message : Str = undef )
180 Wraps Test::Builder based test function and throws
181 Exception::Assertion if the test is failed. The plan test have to
182 be disabled manually. The Test::More module imports the "fail"
183 method by default which conflicts with "Test::Assert" "fail"
184 method.
185
186 use Test::Assert ':all';
187 use Test::More ignore => [ '!fail' ];
188
189 Test::Builder->new->no_plan;
190 Test::Builder->new->no_ending(1);
191
192 assert_test( sub { cmp_ok($got, '==', $expected, $test_name) } );
193
195 Exception::Assertion, Test::Unit::Lite.
196
198 If you find the bug or want to implement new features, please report it
199 at <http://rt.cpan.org/NoAuth/Bugs.html?Dist=Test-Assert>
200
202 Piotr Roszatycki <dexter@cpan.org>
203
205 Copyright (C) 2008, 2009 by Piotr Roszatycki <dexter@cpan.org>.
206
207 This program is free software; you can redistribute it and/or modify it
208 under the same terms as Perl itself.
209
210 See <http://www.perl.com/perl/misc/Artistic.html>
211
212
213
214perl v5.38.0 2023-07-21 Test::Assert(3pm)