zhivocode / testing
模块化测试的微框架。
1.0.3
2024-03-14 15:40 UTC
Requires
- php: ^8.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.2
- phpstan/phpstan: ^1.10
- squizlabs/php_codesniffer: ^3.7
README
此微框架用于PHP语言的模块化测试,旨在追求优雅和简洁,而不是加载用户过多的功能。它提供了所有必要的工具来执行有效且可靠的测试。它有助于提高软件开发的品质,缩短测试时间,并简化调试过程。它将成为那些重视测试场景中简洁和优雅的开发者不可或缺的工具。
安装
您可以使用composer安装此包
composer require zhivocode/testing
使用
框架初始化
use Zhivocode\Testing\Engine; include_once __DIR__ . '/vendor/autoload.php'; $options = array_merge(['filter' => $argv[1] ?? null], getopt('', ['filter:'])); $exitCode = (new Engine()) ->load(__DIR__ . '/test') ->run($options); exit($exitCode);
测试示例
use Zhivocode\Testing\IData; use Zhivocode\Testing\ITest; class MyTest { public function before(IData $data): void { // Выполняется перед запуском тестов данного класса $data->set('foo', 'bar'); } public function after(IData $data): void { // Выполняется после завершения тестов данного класса $data->unset('foo'); } public function beforeEach(IData $data): void { // Выполняется перед запуском каждого теста данного класса $data->set('baz', 'bat'); } public function afterEach(IData $data): void { // Выполняется после завершения каждого теста данного класса $data->unset('baz'); } public function testGetData(ITest $test, IData $data): void { $data->get('foo'); // Получение раннее заданных данных } public function testNested(ITest $test, IData $data): void { $test->test( 'Вложенный тест 1', function (ITest $test, IData $data) { // Можно выстраивать многоуровневое тестирование } ); $test->test( 'Вложенный тест 2', function (ITest $test, IData $data) { $test->test( 'Вложенный тест 3', function (ITest $test, IData $data) { // Уровень вложенности тестов не ограничен } ); } ); } public function testSuccess(ITest $test, IData $data): void { // Если метод не меняет состояние $test, такой тест считается успешно завершенным } public function testFail(ITest $test, IData $data): void { $test->fail('Сообщение о возникшей ошибке в тестировании'); } public function testSkip(ITest $test, IData $data): void { $test->skip('Сообщение о причине прерывания теста и прерывания дальнейшего тестирования в текущем методе'); } public function testFatal(ITest $test, IData $data): void { $test->fatal('Сообщение о ошибке в тестировании и полного прерывания дальнейшего тестирования'); } }
运行测试
php ./test.php
运行特定类测试的测试
php ./test.php --filter MyTest
运行特定类测试方法的测试
php ./test.php --filter MyTest::testSuccess
运行特定类测试方法嵌套测试的测试
php ./test.php --filter "MyTest::testNested::Вложенный тест 2"
测试报告示例
变更日志
请查看变更日志以获取最近更改的更多信息。
参与项目
请查看参与以获取详细信息。
参与者
许可证
麻省理工学院(MIT)许可证。请查看许可证文件以获取更多信息。