FuelPHP - 单元测试

单元测试是开发大型项目必不可少的过程。单元测试有助于在开发的每个阶段自动测试应用程序的组件。当应用程序的组件未按照项目的业务规范运行时,它会发出警报。单元测试可以手动完成,但通常是自动化的。

PHPUnit

FuelPHP 框架与 PHPUnit 测试框架集成。要为 FuelPHP 框架编写单元测试,我们需要设置 PHPUnit。如果未安装 PHPUnit,请下载并安装它。我们可以使用以下命令确认系统中 PHPUnit 的可用性。

phpunit --version

如果 PHPUnit 可用,您将看到类似于以下的结果。

PHPUnit 5.1.3 由 Sebastian Bergmann 和贡献者开发。

创建单元测试

FuelPHP 提供的用于编写单元测试的标准位置是 fuel/app/tests。我们可以在单独的文件夹中为控制器、模型、视图和演示者编写单元测试。让我们编写一个单元测试来验证 Model_Employee 对象。

  • 步骤 1 − 在 fuel/app/tests 文件夹下创建一个文件夹 model。

  • 步骤 2 −在 fuel/app/tests/model/ 文件夹下创建一个文件 employee.php。

  • 步骤 3 − 通过扩展 PHPUnit 提供的 TestCase 类创建一个新的测试类 Test_Model_Employee。

  • 步骤 4 − 编写一个方法 testInstanceOfEmployee(),使用 PHPUnit 的 TestCase 类提供的 assertInstanceOf() 方法对员工对象的创建进行资产化。

以下是完整代码 −

<?php  
   class Test_Model_Employee extends TestCase { 
      public function testInstanceOfEmployee() { 
         $this->assertInstanceOf(Model_Employee::class, new Model_Employee()); 
      } 
   } 

创建测试组

FuelPHP 提供了创建一组测试用例的选项。创建组就像添加 docblock 属性 @group 一样简单。让我们将测试用例包含在 MyTest 组中。

<?php   
   /** 
      * @group MyTest 
   */ 
   class Test_Model_Employee extends TestCase { 
      public function testInstanceOfEmployee() { 
         $this->assertInstanceOf(Model_Employee::class, new Model_Employee()); 
      } 
   }

运行测试

要运行目录中的所有测试,请使用以下命令。

$ php oil test

要运行特定的一组测试,请使用以下命令。

$ php oil test --group = MyTest

执行命令后,您将收到以下响应。

Tests Running...This may take a few moments.
PHPUnit 5.1.3 by Sebastian Bergmann and contributors.
                                        1 / 1 (100%).
Time: 123 ms, Memory: 8.00Mb
OK (1 test, 1 assertion)