@@ -28,13 +28,9 @@ It comes with the following features:
28
28
constraints to apply; 2. running tests in parallel when a test suite is split
29
29
in several phpunit.xml files; 3. recording and replaying skipped tests;
30
30
31
- * Provides polyfills for methods that are not available in older version of
32
- PHPUnit
33
-
34
- * Provide namespaced class name for older version of PHPUnit
35
-
36
- * Makes compatible testSuite with both PHPUnit 8 and previous version by
37
- removing typehint on `setUp ` and `tearDown ` methods.
31
+ * It allows to create tests that are compatible with multiple PHPUnit versions
32
+ (because it provides polyfills for missing methods, namespaced aliases for
33
+ non-namespaced classes, etc.).
38
34
39
35
Installation
40
36
------------
@@ -379,46 +375,50 @@ Running the following command will display the full stack trace:
379
375
380
376
$ SYMFONY_DEPRECATIONS_HELPER='/Doctrine\\Common\\ClassLoader is deprecated\./' ./vendor/bin/simple-phpunit
381
377
382
- Testing with multiple version of PHPUnit
383
- ----------------------------------------
378
+ Testing with Multiple PHPUnit Versions
379
+ --------------------------------------
384
380
385
- Use Case
386
- ~~~~~~~~
381
+ When testing a library that has to be compatible with several versions of PHP,
382
+ the test suite cannot use the latest versions of PHPUnit because:
383
+
384
+ * PHPUnit 8 deprecated several methods in favor of other methods which are not
385
+ available in older versions (e.g. PHPUnit 4);
386
+ * PHPUnit 8 added the ``void `` return type to the ``setUp() `` method, which is
387
+ not compatible with PHP 5.5;
388
+ * PHPUnit switched to namespaced classes starting from PHPUnit 6, so tests must
389
+ work with and without namespaces.
390
+
391
+ Polyfills for the Unavailable Methods
392
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
393
+
394
+ .. versionadded :: 4.4
395
+
396
+ This feature was introduced in Symfony 4.4.
387
397
388
- When testing a library that have to be compatible with serveral version of PHP
389
- at the same time (like Symfony does), because of dependencies, the test suite
390
- have to be tested by differentes version of PHPUnit. Unfortunatly, writing a
391
- code compatible with a too wide range of version is not possible. ie:
392
- - several function in PHPUnit 8 are deprecated but the replacements methods
393
- didn't exists int PHPUnit 4.
394
- - PHPUnit 8 added return typehint in method ``setUp(): void `` which is not
395
- compatible with PHP 5.5.
396
- - PHPUnit switch to namespaced class starting from PHPUnit 6. Tests have to
397
- handle both case with/without namespaces.
398
-
399
- Polyfill for the methods
400
- ~~~~~~~~~~~~~~~~~~~~~~~~
401
-
402
- When using the command ``simple-phpunit ``, PHPUnit Bridge injects pollyfills
403
- for most of methods from the class ``TestCase `` and ``Assert `` in order to
404
- write Test cases even compatible with PHPUnit 4. Some of those methods are
405
- ``expectException ``, ``expectExcpetionMessage ``, ``expectExceptionCode ``,
406
- ``createPartialMock ``, ``assertEqualsWithDelta ``, ``assertContainsEquals ``, ...
407
-
408
- Remove void return typehint
409
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~
410
-
411
- When running the command ``simple-phpunit `` with the env variable
412
- ``SYMFONY_PHPUNIT_REMOVE_RETURN_TYPEHINT=1 `` the PHPUnit bridge will alterate
413
- the code of PHPUnit to remove the return typehint (introduced in PHPUnit 8)
414
- from methods ``setUp ``, ``tearDown ``, ``setUpBeforeClass `` and
415
- ``tearDownAfterClass ``. Thuse allows you to write a Test compatible with both
416
- PHP 5 and PHPUnit 8.
417
-
418
- An alternative, is to use the trait :class: `Symfony\B ridge\P hpUnit\S etUpTearDownTrait `.
419
- This trait will provide the right signature for the methods ``setUp ``, ``tearDown ``,
420
- ``setUpBeforeClass `` and ``tearDownAfterClass `` and delegates the call to the methods
421
- ``doSetUp ``, ``doTearDown ``, ``doSetUpBeforeClass `` and ``doTearDownAfterClass ``::
398
+ When using the ``simple-phpunit `` script, PHPUnit Bridge injects polyfills for
399
+ most methods of the ``TestCase `` and ``Assert `` classes (e.g. ``expectException() ``,
400
+ ``expectExcpetionMessage() ``, ``assertContainsEquals ``, etc.). This allows writing
401
+ test cases using the latest best practices while still remaining compatible with
402
+ older PHPUnit versions.
403
+
404
+ Removing the Void Return Type
405
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
406
+
407
+ .. versionadded :: 4.4
408
+
409
+ This feature was introduced in Symfony 4.4.
410
+
411
+ When running the ``simple-phpunit `` script with the ``SYMFONY_PHPUNIT_REMOVE_RETURN_TYPEHINT ``
412
+ environment variable set to ``1 ``, the PHPUnit bridge will alter the code of
413
+ PHPUnit to remove the return type (introduced in PHPUnit 8) from ``setUp() ``,
414
+ ``tearDown() ``, ``setUpBeforeClass() `` and ``tearDownAfterClass() `` methods.
415
+ This allows you to write a test compatible with both PHP 5 and PHPUnit 8.
416
+
417
+ Alternatively, you can use the trait :class: `Symfony\B ridge\P hpUnit\S etUpTearDownTrait `,
418
+ which provides the right signature for the ``setUp() ``, ``tearDown() ``,
419
+ ``setUpBeforeClass() `` and ``tearDownAfterClass() `` methods and delegates the
420
+ call to the ``doSetUp() ``, ``doTearDown() ``, ``doSetUpBeforeClass() `` and
421
+ ``doTearDownAfterClass() `` methods::
422
422
423
423
use PHPUnit\Framework\TestCase;
424
424
use Symfony\Bridge\PhpUnit\SetUpTearDownTrait;
@@ -436,18 +436,21 @@ This trait will provide the right signature for the methods ``setUp``, ``tearDow
436
436
437
437
protected function doSetup(): void
438
438
{
439
- // Visibility and return typehint of method is free.
439
+ // visibility and return type-hint of method is free
440
440
}
441
441
}
442
442
443
+ Using Namespaced PHPUnit Classes
444
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
445
+
446
+ .. versionadded :: 4.4
443
447
444
- Use namespaced class
445
- ~~~~~~~~~~~~~~~~~~~~
448
+ This feature was introduced in Symfony 4.4.
446
449
447
- The PHPUnit bridge adds namespaced class aliases for most of PHPUnit class
448
- declared in the old fashion way (ie. ``PHPUnit_Framework_Assert ``), allowing
449
- you to always use the namespaced class declaration even when the test is
450
- executed with PHPUnit 4.
450
+ The PHPUnit bridge adds namespaced class aliases for most of the PHPUnit classes
451
+ declared without namespaces (e.g. ``PHPUnit_Framework_Assert ``), allowing you to
452
+ always use the namespaced class declaration even when the test is executed with
453
+ PHPUnit 4.
451
454
452
455
Time-sensitive Tests
453
456
--------------------
0 commit comments