NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Packagist · #2174 most downloaded on Packagist
Nette Tester: enjoyable unit testing in PHP with code coverage reporter. 🍏🍏🍎🍏
Last release 25 days ago
13 Sep 2026
Ships fairly regularly
a new release about every 4 months
Rarely documented
notes for 10 of 45 stable releases
Nothing withdrawn
no release was ever pulled
14 years old
45 releases · first in 2012
A release about trust: a green result now means more. Assertions no longer skip checks silently, parallel runs clean up after themselves, reports stay
A release about trust: a green result now means more. Assertions no longer skip checks silently, parallel runs clean up after themselves, reports stay valid whatever your tests print, and the code coverage report got a thorough round of fixes. And yes, PHP 8.6 is supported.
redirect('https://…', 302) instead of a bare redirect()'0' message is now really checked instead of silently disabling the message check; pass null if you don't want to verify the message@phpVersion – boundaries and the == and != operators now work as documented: @phpVersion 8.4.3 runs on PHP 8.4.3, == 8.4.1 runs only on 8.4.1 and != 8.4.1 everywhere else. Common forms like @phpVersion 8.1 or < 8.4 behave as before; == and != compare the full version, so == 8.4 matches no release@multiple – 0 or a non-numeric value is reported as an error instead of quietly running the test twice@httpCode reads the right status even when php-cgi prints a warning before the headersINF and NAN are dumped as valid PHPfollow: true the headers come from the final response only, so the Location of a redirect no longer leaks through; a header sent several times (e.g. Set-Cookie) is joined with a comma instead of keeping the last value; header existence checks count as assertions%f% rejects invalid numbers like .1.2, and a failing regular expression no longer leaves pcre.backtrack_limit changedrb+ and touch() now behave like a real file[attr$="value"], attribute values containing quotes and selector lists like a, b on PHP < 8.4 work correctlyfailures attribute instead of errors (tools reading only errors now see 0).. or a symbolic linktester exits with code 1 when the requested report cannot be generatedOne column per quarter.
PhpInterpreter now passes the command to proc_open() as an array, so PHP handles argument escaping itself and the subshell is bypassed on Linux too –
proc_open() as an array, so PHP handles argument escaping itself and the subshell is bypassed on Linux too – fewer surprises with paths and arguments containing spaces or special charactersLogicException instead of silently returning an unset value when the test hasn't finished running yet – mistakes surface immediately rather than turning into puzzling downstream errorsThe headline: Tester now respects your system php.ini by default, which is a breaking change but makes the "it works on my machine" debugging sessions…
This release brings true parallel test execution on Windows, smarter PHP configuration handling, and a bunch of quality-of-life improvements. The headline: Tester now respects your system php.ini by default, which is a breaking change but makes the "it works on my machine" debugging sessions a lot shorter.
php.ini by default (#465)stream_select() fix means Windows users can now enjoy actual parallelism, not just the illusion of it.test() and testException() lifecycle improvements – Both functions now properly call setUp() and tearDown(), and tearDown() runs even when tests fail. Your cleanup code will actually clean up.testNoError()Nothing published for this version
support for PHP 8.5 added HttpAssert added Assert::notMatch()
Dumper::toPhp() prints enum case directly
Dumper::toPhp() prints enum case directly (#457)DomQuery::closest()TestHandler: improve cache file uniqueness
Add testcase method's name to the test's title.
Implemented console-lines mode which prints each test on separate line.
console-lines mode which prints each test on separate line. (#443)Environment::setupFunctions() creates global functions testException()fixed accessed property before initialization
Capture stderr of test via temp file and output it in test results [Closes #420 ]
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →