PHPUnit can perform additional checks while it executes the tests. In
addition to the fine-grained control over the various strict mode checks
(see below) you may use the --strict
commandline option
or set strict="true"
in PHPUnit's XML configuration file
to enable all of them.
PHPUnit can be strict about tests that do not test anything. This check
can be enabled by using the --report-useless-tests
option on the commandline or by setting
beStrictAboutTestsThatDoNotTestAnything="true"
in
PHPUnit's XML configuration file.
A test that that does not perform an assertion will be marked as risky
when this check is enabled. Expectations on mock objects or annotations
such as @expectedException
count as an assertion.
PHPUnit can be strict about unintentionally covered code. This check
can be enabled by using the --strict-coverage
option on
the commandline or by setting
checkForUnintentionallyCoveredCode="true"
in PHPUnit's
XML configuration file.
A test that is annotated with @covers
and executes code that
is not listed using a @covers
or @uses
annotation will be marked as risky when this check is enabled.
PHPUnit can be strict about output during tests. This check can be enabled
by using the --disallow-test-output
option on the
commandline or by setting
beStrictAboutOutputDuringTests="true"
in PHPUnit's XML
configuration file.
A test that emits output, for instance by invoking print
in
either the test code or the tested code, will be marked as risky when this
check is enabled.
A time limit can be enforced for the execution of a test if the
PHP_Invoker
package is installed and the
pcntl
extension is available. The enforcing of this
time limit can be enabled by using the
--enforce-time-limit
option on the commandline or by
setting beStrictAboutTestSize="true"
in PHPUnit's XML
configuration file.
A test annotated with @large
will fail if it takes
longer than 60 seconds to execute. This timeout is configurable via the
timeoutForLargeTests
attribute in the XML
configuration file.
A test annotated with @medium
will fail if it takes
longer than 10 seconds to execute. This timeout is configurable via the
timeoutForMediumTests
attribute in the XML
configuration file.
A test that is not annotated with @medium
or
@large
will be treated as if it were annotated with
@small
. A small test will fail if it takes longer than
1 second to execute. This timeout is configurable via the
timeoutForSmallTests
attribute in the XML configuration
file.