Skip to content
This repository has been archived by the owner on Mar 7, 2023. It is now read-only.

webimpress/phpunit-migration

Repository files navigation

Build Status Coverage Status

PHPUnit migration tool

Migrate project to the newest version of PHPUnit.

[Work In Progress] Use it on the own risk :)

How to use the tool?

Clone the project:

$ git clone https://github.com/webimpress/phpunit-migration.git

Go into the directory and install dependencies:

$ cd phpunit-migration
$ composer install

To update your project to the newest version of PHPUnit go to your project directory and run:

$ ../path/to/phpunit-migration/bin/phpunit-migration migrate

What the tool is changing?

  1. compose dependencies to the latest PHPUnit versions,
  2. \PHPUnit_Framework_TestCase to namespaced \PHPUnit\Framework\TestCase,
  3. setExpectedException to expectException*,
  4. setUp and tearDown to protected and correct case (setup => setUp etc.),
  5. FQCN in @cover tag (i.e. @covers MyClass to @covers \MyClass),
  6. assertInternalType and assertNotInternalType to more specific assertion method (PHPUnit 7.5+),
  7. getMock to getMockBuilder with other required function calls (PHPUnit 5.4+),
  8. getMockBuilder(...)->...->getMock() to createMock(...) if possible (PHPUnit 5.4+),
  9. assertEquals() and assertNotEquals() with $delta, $maxDepth, $canonicalize and $ignoreCase parameters to more specific assertion method (PHPUnit 7.5+),
  10. add void return type to the following methods: setUp(), tearDown(), setUpBeforeClass(), tearDownAfterClass(), assertPreConditions(), assertPostConditions(), onNotSuccessfulTest(\Throwable $th) (PHPUnit 8.0+),
  11. expectExceptionMessageRegExp to expectExceptionMessageMatches (PHPUnit 8.4+),
  12. use new (more readable) assertion names:
  • assertNotIsReadable replaced by assertIsNotReadable',
  • assertNotIsWritable replaced by assertIsNotWritable',
  • assertDirectoryNotExists replaced by assertDirectoryDoesNotExist',
  • assertDirectoryNotIsReadable replaced by assertDirectoryIsNotReadable',
  • assertDirectoryNotIsWritable replaced by assertDirectoryIsNotWritable',
  • assertFileNotExists replaced by assertFileDoesNotExist',
  • assertFileNotIsReadable replaced by assertFileIsNotReadable',
  • assertFileNotIsWritable replaced by assertFileIsNotWritable',
  • assertRegExp replaced by assertMatchesRegularExpression',
  • assertNotRegExp replaced by assertDoesNotMatchRegularExpression'. (PHPUnit 9.1+),
  1. TODO: getMockBuilder(...)->...->setMethods(...)->getMock() to createPartialMock(...) if possible (PHPUnit 5.5.3+),
  2. TODO: assertContains() and assertNotContains() on string haystack to more specific assertion method (PHPUnit 7.5+),
  3. TODO: $this->assert to self::assert.

What the tool is NOT doing?

  1. changing PHPUnit_Framework_Error_* classes
  2. probably other things I don't remember now ;-)

Note

Please remember it is developer tool and it should be used only as a helper to migrate your tests to newer version of PHPUnit. Always after migration run all your test to verify if applied changes are right and your tests are still working!