[wp-trac] [WordPress Trac] #46149: PHPUnit 8.x support

WordPress Trac noreply at wordpress.org
Sat Aug 7 10:20:21 UTC 2021

#46149: PHPUnit 8.x support
 Reporter:  SergeyBiryukov                       |       Owner:  netweb
     Type:  task (blessed)                       |      Status:  assigned
 Priority:  high                                 |   Milestone:  5.9
Component:  Build/Test Tools                     |     Version:
 Severity:  normal                               |  Resolution:
 Keywords:  has-patch has-unit-tests early php8  |     Focuses:
  needs-dev-note                                 |

Comment (by SergeyBiryukov):

 In [changeset:"51567" 51567]:
 #!CommitTicketReference repository="" revision="51567"
 Build/Test Tools: Use the PHPUnit Polyfill TestCase as `void` workaround.

 > PHPUnit 8.0.0 introduced a `void` return type declaration to the
 "fixture" methods – `setUpBeforeClass()`, `setUp()`, `tearDown()` and
 `tearDownAfterClass()`. As the `void` return type was not introduced until
 PHP 7.1, this makes it more difficult to create cross-version compatible
 tests when using fixtures, due to signature mismatches.
 > The `Yoast\PHPUnitPolyfills\TestCases\TestCase` overcomes the signature
 mismatch by having two versions. The correct one will be loaded depending
 on the PHPUnit version being used.
 > When using this TestCase, if an individual test, or another TestCase
 which extends this TestCase, needs to overload any of the "fixture"
 methods, it should do so by using a snake_case variant of the original
 fixture method name, i.e. `set_up_before_class()`, `set_up()`,
 `assert_pre_conditions()`, `assert_post_conditions()`, `tear_down()`, and
 > The snake_case methods will automatically be called by PHPUnit.
 > > IMPORTANT: The snake_case methods should not call the PHPUnit parent,
 i.e. do not use `parent::setUp()` from within an overloaded `set_up()`
 method. If necessary, DO call `parent::set_up()`.

 Reference: https://github.com/Yoast/PHPUnit-Polyfills#testcases

 This commit:
 * Lets the `PHPUnit_Adapter_TestCase` extend the
 `Yoast\PHPUnitPolyfills\TestCases\TestCase`, which makes this solution for
 the `void` return type available to the WordPress test suite.
 * Removes the individual import and trait `use` statements for the
 Polyfill traits. These are no longer necessary as the
 `Yoast\PHPUnitPolyfills\TestCases\TestCase` already includes those.

 Follow-up to [51559-51566].

 Props jrf, hellofromTonya, johnbillion, netweb, SergeyBiryukov.
 See #46149.

Ticket URL: <https://core.trac.wordpress.org/ticket/46149#comment:83>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform

More information about the wp-trac mailing list