Atoum: A Fluent Alternative to PHPUnit for PHP Testing
Atoum stands as a contemporary PHP testing framework, presenting a compelling alternative to PHPUnit. Its fluent interface prioritizes readability and simplifies test creation. This tutorial explores Atoum's installation, configuration, and core functionalities, highlighting its advantages for modern PHP development.
Key Features:
atoum/stubs
package, facilitating code completion and debugging.given
, when
, then
) and a more direct approach, catering to diverse preferences.Beyond PHPUnit: Why Choose Atoum?
While PHPUnit holds a dominant position in the PHP testing landscape, Atoum offers a refreshing approach. Its modern design and intuitive interface streamline the testing process, particularly beneficial for developers seeking enhanced readability and ease of use.
Installation and Setup:
Install Atoum and the essential atoum/stubs
package using Composer:
composer require atoum/atoum composer require atoum/stubs
For optimal PhpStorm integration (or similar IDEs), the atoum/stubs
package is crucial for improved code completion.
Configuration (.atoum.php):
Customize reporting and code coverage output by creating a .atoum.php
file in your project's root directory:
<?php use mageekguy\atoum; $stdout = new atoum\writers\std\out; $report = new atoum\reports\realtime\santa; // Or cli, phing, tap, NyanCat $script->addReport( $report->addWriter($stdout) );
Configure HTML code coverage by creating a /coverage/html
directory and adapting vendor/atoum/resources/configurations/runner/coverage.php.dist
(rename to coverage.php
):
<?php // ... (Update paths and URLs as needed) ...
Writing Your First Test:
Atoum recommends creating a tests/units
directory mirroring your application's source structure. For example, a test for an src/App/Entity/Journal.php
entity would reside in tests/units/Entity/Journal.php
.
Example test using BDD style:
composer require atoum/atoum composer require atoum/stubs
Running Tests and Code Coverage:
Execute tests with code coverage using:
<?php use mageekguy\atoum; $stdout = new atoum\writers\std\out; $report = new atoum\reports\realtime\santa; // Or cli, phing, tap, NyanCat $script->addReport( $report->addWriter($stdout) );
The HTML code coverage report will be generated in the /coverage/html
directory.
Debugging with dump()
:
For debugging, use the dump()
method (requires running with -d
or --debug
):
<?php // ... (Update paths and URLs as needed) ...
Annotations: @php and @extensions:
Atoum leverages annotations for advanced test control:
@php <version></version>
: Specifies the required PHP version for a test method or class.@extensions <extension1> <extension2> ...</extension2></extension1>
: Specifies required PHP extensions.Conclusion:
Atoum provides a powerful and user-friendly alternative to PHPUnit. Its fluent interface, built-in features, and support for advanced testing scenarios make it a strong contender for modern PHP development. While the initial learning curve might be slightly steeper than PHPUnit, the long-term benefits in terms of readability and maintainability are significant. Explore its extensive documentation and extensions to unlock its full potential.
The above is the detailed content of Testing PHP Code with Atoum - an Alternative to PHPUnit. For more information, please follow other related articles on the PHP Chinese website!