Assumptions can be used to skip tests when common preconditions, like the PHP Version or installed extensions, are not met.
The default PHPUnit runner treats tests with failing assumptions as skipped. Custom runners may behave differently.
We have included several assumptions like assumeTrue
, assumeExtensionLoaded
,... by default. All of those functions are subsumed in assumeThat, with the appropriate Hamcrest
matcher.
A failing assumption in a @before
or @beforeClass
method will have the same effect as a failing assumption in each @test
method of the class.
The concept behind Assumptions for PHPUnit is based on the adequate junit feature, which is documented on their wiki - Assumptions with assume
There is a similar feature in PHPUnit called @requires!
If you are familiar in using @requires
annotation to dedicate that a given requirement would be given and you are happy about, then you just do not need the use of Assumption for PHPUnit.
But if you want to have
- code completion
- better readability
- finer control
- more requirement abilities
then you should give Assumption for PHPUnit a try.
public function testMethod()
{
assumeTrue((bool) getenv('ENV_TEST'), 'Environment Variable not set.');
// if environment variable ENV_TEST is not set, then the test will be skipped.
...
}
- PHP >= 5.6