naldz/grootest

GrooTest 是主要用于功能测试的库集合

v0.1.2 2014-12-15 15:51 UTC

This package is auto-updated.

Last update: 2024-09-21 10:52:38 UTC


README

什么是 GrooTest

GrooTest 是主要用于功能测试的库集合。它提供了数据库测试、Web 测试和页面对象的基类。它还提供了测试的固定配置管理。

要求

  • GrooTest 仅支持 PHP 5.3 及以上版本。
  • PHPUnit 3.7 和 uip
  • PHPUnit DBUnit 扩展

安装

composer require naldz/GrooTest

配置

GrooTest 从 $_ENV 变量读取配置数据。应该提供一个前缀变量,GrooTest 将以此为基础命名配置变量。最佳方式是通过 phpunit.xml 配置文件定义这些环境变量。

示例

<php>
        <env name="GROOTEST_CONFIG_PREFIX" value="TEST_CONFIG_" />
        <env name="TEST_CONFIG_SELENIUM_HOST" value="https://:4444/wd/hub" />
        <env name="TEST_CONFIG_DSN" value="sqlite:/path/db.sqlite" />
</php>

以上配置示例中,GrooTest 将使用 'TEST_CONFIG_' 文本作为所有测试配置数据的前缀。将读取并保存为 SELENIUM_HOST 配置数据的 'TEST_CONFIG_SELENIUM_HOST' 环境变量,其值为 'https://:4444/wd/hub',并将 TEST_CONFIG_DSN 作为 DSN 的值,值为 'sqlite:/path/db.sqlite'。配置数据现在如下所示

array(
    "SELENIUM_HOST" => "https://:4444/wd/hub",
    "DSN" => "sqlite:/path/db.sqlite"
)

此配置映射被保存到一个 Configuration 对象(Naldz\GrooTest\Config\Configuration)中,它是 WebTestCase 类的一个受保护属性(config)。

在 bootstrap 文件中实例化 Configuration 对象并将其分配给 "GROOTEST_CONFIG" 环境变量也很重要。

use Naldz\GrooTest\Config\ConfigurationManager;
use Naldz\GrooTest\Config\Configuration;

$configManager = new ConfigurationManager();
$configData = $configManager->getConfigurationData();
$_ENV['GROOTEST_CONFIG'] = new Configuration($configData);

测试用例

始终创建一个 TestCase 类作为您项目的基础测试用例是一个好主意。此 TestCase 类应从 WebTestCase(Naldz\GrooTest\Tests\TestCase\WebTestCase)类扩展,该类是 DatabaseTestCase(Naldz\GrooTest\Tests\TestCase\DatabaseTestCase)类的子类。DatabaseTestCase 也是 DBUnit PHPUnit 扩展提供的抽象类 PHPUnit_Extensions_Database_TestCase 的子类。类的层次结构如下所示

PHPUnit_Extensions_Database_TestCase
  |
  |
  -- DatabaseTestCase \\ Responsible for fixture loading
       |
       |
       -- WebTestCase \\ Responsible for defining objects related to Selenium
            |
            | 
            -- ProjectTestCase \\ Should implement the abstract method 'getConnection' and definition of fixture sets