fw3_for_old/ez_test

Flywheel3 框架:针对旧版 PHP 版本的简易单元测试工具

安装次数: 8,786

依赖者: 2

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 0

开放问题: 0

类型:工具

1.0.7 2021-12-07 17:28 UTC

This package is auto-updated.

Last update: 2024-09-07 23:44:06 UTC


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=&quot;#id&quot; onclick=&quot;alert(&#039;alert&#039;);&quot;&gt;'
      actual:   '&lt;a href=&quot;#id&quot; onclick=&quot;alert(&#039;alert&#039;);&quot;&gt;'
  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. 创建和执行测试

  1. 以下是在假设以下目录结构的情况下进行说明的。

假设 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
  1. 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();
  1. 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 的类,并将其识别为测试目标。

  1. 执行测试

使用 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();