All notable changes of the PHPUnit 10.0 release series are documented in this file using the Keep a CHANGELOG principles.
10.0.14 - 2023-03-01
- The
PHPUnit\Event\Test\AssertionSucceeded
andPHPUnit\Event\Test\AssertionFailed
events are no longer emitted when they have no subscribers - The
PHPUnit\Event\Test\AssertionSucceeded::value()
method is no longer deprecated and returns the exported value again
10.0.13 - 2023-02-27
- #5186: SBOM does not validate
- #5258: JUnit logger crashes when test is skipped by missing PHP extension when running in separate process
10.0.12 - 2023-02-25
- Values of other types than
array
may now be passed toassertIsList()
- #5234: Constants defined in configuration file are not defined in bootstrap file when test is run in separate process
- #5251: JUnit XML logger does not properly handle errors on unprepared tests
10.0.11 - 2023-02-20
- #5192: Running an empty test shows help screen
- #5224: PHPUnit looks "at the clock" and trusts
$_SERVER['REQUEST_TIME_FLOAT']
10.0.10 - 2023-02-20
- #5218: Code Coverage does not work for tests run in separate process(es)
- #5219: Exceptions thrown in event subscribers affect how tests are run and/or how their outcome is evaluated
10.0.9 - 2023-02-19
- Corrected the fix for #5210
10.0.8 - 2023-02-18
- #5210: Exceptions raised in
TestCase::tearDown()
are not handled correctly
10.0.7 - 2023-02-08
- The
PHPUnit\Event\Test\AssertionSucceeded::value()
method is now deprecated and always returns''
(reverted in PHPUnit 10.0.14)
- #5183: Values used in assertions are exported for
Test\AssertionSucceeded
events
10.0.6 - 2023-02-08
- #5178: Test depending on a test with data provider is always skipped
10.0.5 - 2023-02-07
- #5172: Test Runner does not display test runner warnings when TestDox result printer is used
- #5176: Silenced
E_DEPRECATED
errors are reported
10.0.4 - 2023-02-05
- #5169: Parameter type for constructor of
GreaterThan
andLessThan
constraints does not match parameter type forAssert::greaterThan()
andAssert::lessThan()
- #5171:
@backupStaticProperties
and@backupStaticAttributes
trigger an error
10.0.3 - 2023-02-04
PHPUnit\Event\TestSuite\Skipped
andPHPUnit\Event\TestSuite\SkippedSubscriber
(required for the fixing #5165)
- #5165:
markTestSkipped()
not handled correctly when called in "before first test" method - #5166: Error when generating TestDox output for risky test
10.0.2 - 2023-02-04
- The
PHPUnit\TextUI\Configuration\Configuration::loadPharExtensions()
method has been deprecated in favour ofPHPUnit\TextUI\Configuration\Configuration::noExtensions()
- #5073:
--no-extensions
CLI option only prevents extension PHARs from being loaded assertNotCount()
,assertEmpty()
,assertNotEmpty()
,assertSameSize()
, andassertNotSameSize()
now rejectGenerator
arguments just asassertCount()
does
10.0.1 - 2023-02-03
- #5157: Test Runner tries to run hook methods for
TestSuite
objects that do not collectTestCase
objects
10.0.0 - 2023-02-03
- #4676: Event System for extending PHPUnit's test runner
- #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()
- Expectations configured on test stubs created using
PHPUnit\Framework\TestCase::createStub()
are no longer evaluated, you need to create a mock object usingPHPUnit\Framework\TestCase::createMock()
instead - 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
PHPUnit\Framework\TestCase::onNotSuccessfulTest()
method can no longer manipulate the outcome of a test - 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
phpunit/php-code-coverage
no longer supports PHPDBG and Xdebug 2