Download the PHP package sanmai/phpunit-legacy-adapter without Composer
On this page you can find all versions of the php package sanmai/phpunit-legacy-adapter. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download sanmai/phpunit-legacy-adapter
More information about sanmai/phpunit-legacy-adapter
Files in sanmai/phpunit-legacy-adapter
Package phpunit-legacy-adapter
Short Description PHPUnit Legacy Versions Adapter
License Apache-2.0
Informations about the package phpunit-legacy-adapter
PHPUnit Legacy Versions Adapter
As you're here, you are probably well aware that PHPUnit 8+ requires common template methods
like setUp()
or tearDown()
to have a void
return type declaration, which methods naturally break anything below PHP 7.1.
Although it is not a big deal to automatically update your code to use these return type declaration with help from the likes of PHP-CS-Fixer or Rector, it might become a problem if, for whatever unfortunate (but, hopefully, lucrative) reasons, you have to ensure your code is working under PHP 7.0 or PHP 5.6, all the while wanting using the best world can give you in the more-less recent versions of PHPUnit.
In this case, you'll have two problems. One, newer versions of PHPUnit do not have old assertions, but you can find a way around this, and another,
as mentioned, newer versions of PHPUnit require void
return type declarations for the convenient template methods, and then you're stuck because
rewriting tests to work without these template methods is a major pain and might be impossible even. And then this small library comes to save your day!
How to use
First, update your tests to extend from \LegacyPHPUnit\TestCase
instead of \PHPUnit\Framework\TestCase
:
Then, where you had to use setUp(): void
template method, use doSetUp()
method, omitting all any any return types in a fully backward-compatible way.
There are similar replacements for most other template method:
Reference
Method | Replacement |
---|---|
setUpBeforeClass(): void |
doSetUpBeforeClass() |
tearDownAfterClass(): void |
doTearDownAfterClass() |
setUp(): void |
doSetUp() |
tearDown(): void |
doTearDown() |
assertPreConditions(): void |
doAssertPreConditions() |
assertPostConditions(): void |
doAssertPostConditions() |
Supported versions
- 6.x version branch supports PHPUnit 4, PHPUnit 5, and PHPUnit 6.
- It was tested to work under PHP 5.3 - PHP 7.4.
- 8.x version branch supports PHPUnit 7, PHPUnit 8, and PHPUnit 9.
- It was tested to work under PHP 7.1 - PHP 8.1.
Future versions will likely follow the same pattern.
What this library does not do
Although this library solves the most annoying part of the problem, there are other parts the library was not designed to cover. For example:
- Some versions of PHPUnit allow
assertContains
to be used with strings, while other do not. - In some versions one method is called
expectExceptionMessageRegExp
, while in others the same method is calledexpectExceptionMessageMatches
. - And so on and on.
There are polyfills for these changed methods (see below), but it should not be a big deal to write an ad hoc polyfill just for the methods you need. E.g.:
If there are several modular (and not) multi-version polyfills for these, and other methods:
- One of the most used is one that comes with Symfony's PHPUnit Bridge. You can check the source here. Note that it does not support inheritance (you'll have to import the trait into every class).
- There's
yoast/phpunit-polyfills
. - There's
phpunitgoodpractices/polyfill
.