fw3_for_old / ez_test
Flywheel3 框架:针对旧版 PHP 版本的简易单元测试工具
Requires
- php: >=5.3.0
- ext-mbstring: *
README
Flywheel3 是一个快速开发框架,提供了简易的单元测试工具。
目标版本和测试版本
目标版本:PHP5.3.3 及以上
测试版本
- 5.3.3
- 5.3.4
- 5.3.5
- 5.3.6
- 5.3.7
- 5.3.8
- 5.3.9
- 5.4.16
- 5.4.39
- 5.4.45
- 5.5.38
- 5.6.40
- 7.0.33
- 7.1.33
- 7.2.33
- 7.3.21
- 7.4.0
- 7.4.9
- 8.0.0
- 8.0.3
主要功能
TestRunner
一个具有与 PHPUnit 相似断言的 UnitTest 执行器,可以在 Windows 和 Unix 系操作系统上运行。
为了在测试失败时输出失败的行以及包含该行的方法名,提供了失败时的追踪。
由于该工具至少从 PHP5.3.0 到 PHP8.0.3 都可以稳定运行,因此可以在 PHP 版本升级时轻松进行预验证和后验证。
执行后示例(成功时)
================================================
fw3_for_old/ez_test.
target test cases => C:\Users\xxx\fw3-for-old\strings\tests
================================================
start time : 2021/04/01 00:07:34.7802
end time : 2021/04/01 00:07:34.8099
exec time : 0.029723882675171sec
================================================
================================================
test result: success (411 / 411)
------------------------------------------------
details
------------------------------------------------
test class:fw3_for_old\tests\strings\builder\modifys\datetime\DateModifierTest (6 / 6)
test class:fw3_for_old\tests\strings\builder\modifys\datetime\StrtotimeModifierTest (6 / 6)
test class:fw3_for_old\tests\strings\builder\modifys\security\EscapeModifierTest (6 / 6)
test class:fw3_for_old\tests\strings\cases\builder\StringBuilderTest (270 / 270)
test class:fw3_for_old\tests\strings\converter\ConvertTest (123 / 123)
================================================
================================================
test has been finished.
================================================
执行后示例(失败时)
================================================
fw3_for_old/ez_test.
target test cases => C:\Users\xxx\fw3-for-old\strings\tests
================================================
start time : 2021/04/01 00:31:52.6694
end time : 2021/04/01 00:31:52.6996
exec time : 0.030210971832275sec
================================================
================================================
test result: failed (410 / 411)
------------------------------------------------
details
------------------------------------------------
test class:fw3_for_old\tests\strings\builder\modifys\datetime\DateModifierTest (6 / 6)
test class:fw3_for_old\tests\strings\builder\modifys\datetime\StrtotimeModifierTest (6 / 6)
test class:fw3_for_old\tests\strings\builder\modifys\security\EscapeModifierTest (5 / 6)
fw3_for_old\tests\strings\builder\modifys\security\EscapeModifierTest->testModify() in line 39
expected: '<a href="#id" onclick="alert('alert');">'
actual: '<a href="#id" onclick="alert('alert');">'
test class:fw3_for_old\tests\strings\cases\builder\StringBuilderTest (270 / 270)
test class:fw3_for_old\tests\strings\converter\ConvertTest (123 / 123)
================================================
================================================
test has been finished.
================================================
使用方法
1. 安装
如果可以使用 composer
请执行以下命令进行安装。
composer require fw3_for_old/ez_test
如果不能使用 composer
下载 ZIP,并将 zip 文件复制到任意目录。
请确保在目标处理之前,以 require_once sprintf('%s/src/ez_test_require_once.php', $path_to_copy_dir); 的形式读取 src/ez_test_require_once.php。
2. 创建和执行测试
- 以下是在假设以下目录结构的情况下进行说明的。
假设 composer.json 放在的目录是当前目录。
在实际应用中,请适当替换。
composer.json
vendor/fw3_for_old/ez_test/src/ez_test_require_once.php
vendor/fw3_for_old/ez_test/src/TestRunner.php
vendor/fw3_for_old/ez_test/src/test_unit
vendor/fw3_for_old/ez_test/src/test_unit/AbstractTest.php
vendor/fw3_for_old/ez_test/src/test_unit/TestInterface.php
请创建以下目录。
tests/cases
- 在
tests目录中创建启动文件。
以 run_test.php 为名创建以下内容的文件。
如果可以使用 composer
<?php
namespace fw3_for_old\ez_test;
require_once sprintf('%s/vendor/autoload.php', dirname(__DIR__));
TestRunner::factory()->run();
如果不能使用 composer
<?php
namespace fw3_for_old\ez_test;
require_once sprintf('%s/vendor/fw3_for_old/ez_test/src/ez_test_require_once.php', dirname(__DIR__));
TestRunner::factory()->run();
- 在
tests/cases目录中创建测试用例。
在 tests/cases 目录中创建继承自 \fw3_for_old\test_unit\AbstractTest 的类。在此期间,测试用例和测试类名称应相同。
测试类必须以 Test 结尾。
同时,在测试类中编写测试方法。
测试方法必须以 test 开头。
示例
<?php
class EzTestToolTest extends \fw3_for_old\ez_test\test_unit\AbstractTest
{
/**
* このクラスでテストを始める前に呼ばれるメソッド
*/
public function setUp()
{
}
/**
* このクラスでテストが終わった後に呼ばれるメソッド
*/
public function tearDown()
{
}
/**
* 各テストメソッドが実行される前に呼ばれるメソッド
*/
public function init()
{
}
/**
* 各テストメソッドが実行された後に呼ばれるメソッド
*/
public function cleanUp()
{
}
/**
* テストメソッド
*
* `test`から始まるメソッドはテストメソッドとして自動実行されます
*/
public function testBuild()
{
$this->assertSame(1, 1); // assertから始まるメソッドがアサーション用メソッドです
}
}
tests/cases 目录下可以有也可以没有子目录。
fw3_for_old/ez_test 默认会尝试从与 TestRunner::factory()->run(); 相同的目录中找到测试目标。
目标目录的确定优先级如下。
cases目录case目录- 包含
TestRunner::factory()->run();的目录
确定目标目录后,将检测文件名和类名以 Test 结尾且实现了 \fw3_for_old\ez_test\test_unit\TestInterface 的类,并将其识别为测试目标。
- 执行测试
使用 PHP CLI 执行启动文件。
示例
php tests/run_test.php
这样,测试的创建和执行就完成了。
3. 特殊使用方法
想要逐个执行多个目录中的测试。
使用 testCaseRootDir 方法指定包含测试用例的目录路径。
<?php
TestRunner::factory()->testCaseRootDir($path_to_test_cases_dir_1)->run();
TestRunner::factory()->testCaseRootDir($path_to_test_cases_dir_2)->run();