All notable changes of the PHPUnit 10.0 release series are documented in this file using the Keep a CHANGELOG principles.
10.0.0 - 2023-02-03
- #4502: Support PHP 8 attributes for adding metadata to test classes and test methods as well as tested code units
- #4641:
assertStringEqualsStringIgnoringLineEndings()
andassertStringContainsStringIgnoringLineEndings()
- #4650: Support dist file name
phpunit.dist.xml
- #4657:
--exclude-testsuite
option - #4818:
assertIsList()
- #4892: Make colors used in HTML code coverage report configurable
- #4893: Make path to custom.css for HTML code coverage report configurable
- #5097: Support for
enum
values in TestDox placeholder replacements TestCase::createStubForIntersectionOfInterfaces()
andTestCase::createMockForIntersectionOfInterfaces()
#[ExcludeGlobalVariableFromBackup('variable')]
attribute for excluding a global variable from the backup/restore of global and super-global variables#[ExcludeStaticPropertyFromBackup('className', 'propertyName')]
attribute for excluding a static property from the backup/restore of static properties in user-defined classes--log-events-text <file>
option that controls streaming of event information (without event telemetry) in text format to a file--log-events-verbose-text <file>
option that controls streaming of event information (with event telemetry) in text format to a file--no-progress
option to disable test execution progress output--no-results
option to disable test result output--no-output
option to disable all output--display-incomplete
option anddisplayDetailsOnIncompleteTests
XML configuration attribute to control whether details on incomplete tests should be displayed--display-skipped
option anddisplayDetailsOnSkippedTests
XML configuration attribute to control whether details on skipped tests should be displayed--display-deprecations
option anddisplayDetailsOnTestsThatTriggerDeprecations
XML configuration attribute to control whether details on tests that triggerE_DEPRECATED
orE_USER_DEPRECATED
should be displayed--display-errors
option anddisplayDetailsOnTestsThatTriggerErrors
XML configuration attribute to control whether details on tests that triggerE_ERROR
orE_USER_ERROR
should be displayed--display-notices
option anddisplayDetailsOnTestsThatTriggerNotices
XML configuration attribute to control whether details on tests that triggerE_STRING
,E_NOTICE
, orE_USER_NOTICE
should be displayed--display-warnings
option anddisplayDetailsOnTestsThatTriggerWarnings
XML configuration attribute to control whether details on tests that triggerE_WARNING
orE_USER_WARNING
should be displayed
- #3871: Declare return types for
InvocationStubber
methods - #3954: Disable global state preservation for process isolation by default
- #4599: Unify cache configuration
- #4603: Use "property" instead of "attribute" for configuring the backup of static fields
- #4656: Prevent doubling of
__destruct()
- Using a non-static method as a data provider is now deprecated
- Using a non-public method as a data provider is now deprecated
- Declaring a data provider method to require an argument is now deprecated
- A test method now continues execution after test(ed) code triggered
E_(USER_)DEPRECATED
,E_(USER_)NOTICE
,E_STRICT
, orE_(USER_)WARNING
- PHPUnit no longer invokes a static method named
suite
on a class that is declared in a file that is passed as an argument to the CLI test runner - PHPUnit no longer promotes variables that are global in the bootstrap script's scope to global variables in the test runner's scope (use
$GLOBALS['variable'] = 'value'
instead of$variable = 'value'
in your bootstrap script) PHPUnit\Framework\TestCase::$backupGlobals
can no longer be used to enable or disable the backup/restore of global and super-global variables for a test case classPHPUnit\Framework\TestCase::$backupStaticAttributes
can no longer be used to enable or disable the backup/restore of static properties in user-defined classes for a test case class@author
is no longer an alias for@group
- The JUnit XML logfile now has both
name
andfile
attributes on<testcase>
elements for PHPT tests - The JUnit XML logfile no longer has
<system-out>
elements that contain the output printed tostdout
by a test - The JUnit XML logfile now only reports test outcome (errored, failed, incomplete, skipped, or passed) and no longer test issues (considered risky, for instance)
- The
forceCoversAnnotation
attribute of the<phpunit>
element of PHPUnit's XML configuration file has been renamed torequireCoverageMetadata
- The
beStrictAboutCoversAnnotation
attribute of the<phpunit>
element of PHPUnit's XML configuration file has been renamed tobeStrictAboutCoverageMetadata
- The public methods of
PHPUnit\Framework\Assert
andPHPUnit\Framework\TestCase
are nowfinal
- The
--testdox
CLI option no longer replaces the default progress output, but only the default result output - The CLI test runner now only stops after a test errored when
--stop-on-error
or--stop-on-defect
is used - The CLI test runner now only stops after a test failed when
--stop-on-failure
or--stop-on-defect
is used - The CLI test runner now only stops after a test triggered a warning when
--stop-on-warning
or--stop-on-defect
is used - The CLI test runner now only stops after a test was marked as risky when
--stop-on-risky
or--stop-on-defect
is used - The CLI test runner now only stops after a test was skipped when
--stop-on-skipped
is used - The CLI test runner now only stops after a test was marked as incomplete when
--stop-on-incomplete
is used
- #3389: Remove
PHPUnit\Framework\TestListener
andPHPUnit\Framework\TestListenerDefaultImplementation
- #3631: Remove support for
"ClassName<*>"
as values for@covers
and@uses
annotations - #3769: Remove
MockBuilder::setMethods()
andMockBuilder::setMethodsExcept()
- #3777: Remove
PHPUnit\Framework\Error\*
classes - #4063: Remove
assertNotIsReadable()
- #4066: Remove
assertNotIsWritable()
- #4069: Remove
assertDirectoryNotExists()
- #4072: Remove
assertDirectoryNotIsReadable()
- #4075: Remove
assertDirectoryNotIsWritable()
- #4078: Remove
assertFileNotExists()
- #4081: Remove
assertFileNotIsReadable()
- #4087: Remove
assertRegExp()
- #4090: Remove
assertNotRegExp()
- #4092: Remove
assertEqualXMLStructure()
- #4142: Remove Prophecy integration
- #4227: Remove
--dump-xdebug-filter
and--prepend
- #4272: Remove
PHPUnit\Util\Blacklist
- #4273: Remove
PHPUnit\Framework\TestCase::$backupGlobalsBlacklist
- #4274: Remove
PHPUnit\Framework\TestCase::$backupStaticAttributesBlacklist
- #4278: Remove
--whitelist
option - #4279: Remove support for old code coverage configuration
- #4286: Remove support for old logging configuration
- #4298: Remove
at()
matcher - #4397: Remove confusing parameter options for XML assertions
- #4531: Remove
--loader
option as well astestSuiteLoaderClass
andtestSuiteLoaderFile
XML configuration settings - #4536: Remove
assertFileNotIsWritable()
- #4596: Remove Test Hooks
- #4564: Remove
withConsecutive()
- #4567: Remove support for generators in
assertCount()
andCount
constraint - #4601: Remove assertions that operate on class/object properties
- Removed the
expectDeprecation()
,expectDeprecationMessage()
, andexpectDeprecationMessageMatches()
methods - Removed the
expectError()
,expectErrorMessage()
, andexpectErrorMessageMatches()
methods - Removed the
expectNotice()
,expectNoticeMessage()
, andexpectNoticeMessageMatches()
methods - Removed the
expectWarning()
,expectWarningMessage()
, andexpectWarningMessageMatches()
methods - Removed the
PHPUnit\Runner\TestSuiteLoader
interface - Removed the
<listeners>
XML configuration element and its children - Removed the
beStrictAboutResourceUsageDuringSmallTests
attribute on the<phpunit>
XML configuration element and the--disallow-resource-usage
option as well as the feature they used to control - Removed the
beStrictAboutTodoAnnotatedTests
attribute on the<phpunit>
XML configuration element and the--disallow-todo-tests
option as well as the feature they used to control - Removed the
convertDeprecationsToExceptions
attribute on the<phpunit>
XML configuration element as well as the feature it used to control - Removed the
convertErrorsToExceptions
attribute on the<phpunit>
XML configuration element as well as the feature it used to control - Removed the
convertNoticesToExceptions
attribute on the<phpunit>
XML configuration element as well as the feature it used to control - Removed the
convertWarningsToExceptions
attribute on the<phpunit>
XML configuration element as well as the feature it used to control - Removed the
noInteraction
attribute on the<phpunit>
XML configuration element and--no-interaction
option as well as the feature they used to control - Removed the
processUncoveredFiles
attribute on the<coverage>
XML configuration element - Removed the
testdoxGroups
XML configuration element, the--testdox-group
option, and the--testdox-exclude-group
option as well as the feature they used to control - Removed the
PHPUnit\Framework\TestCase::getMockClass()
method - Removed the
PHPUnit\Framework\TestCase::$backupGlobalsExcludeList
property, use the#[ExcludeGlobalVariableFromBackup('variable')]
attribute instead for excluding a global variable from the backup/restore of global and super-global variables - Removed the
PHPUnit\Framework\TestCase::$backupStaticAttributesExcludeList
property, use the#[ExcludeStaticPropertyFromBackup('className', 'propertyName')]
attribute instead for excluding a static property from the backup/restore of static properties in user-defined classes - Removed the
PHPUnit\Framework\TestCase::$preserveGlobalState
property, use the@preserveGlobalState enabled
annotation or the#[PreserveGlobalState(true)]
attribute instead for enabling the preservation of global state when running tests in isolation - Removed the
--repeat
option - Removed the
--debug
option - Removed the
--extensions
option - Removed the
--printer
option - Removed the
printerClass
andprinterFile
attributes on the<phpunit>
XML configuration element - Removed the
--testdox-xml
option and the<testdoxXml>
XML configuration element as well as the feature they used to control - Removed the
--verbose
option - Removed the
verbose
attribute on the<phpunit>
XML configuration element - Removed the
<text>
XML configuration element (child of<logging>
) - The CLI test runner can no longer be extended through inheritance, the
PHPUnit\TextUI\Command
class has been removed - PHP 7.3, PHP 7.4, and PHP 8.0 are no longer supported