适用于 PHP 的 NetBeans IDE 支持 PHPUnit 自动测试。通过 PHPUnit,NetBeans IDE 可为 PHP 提供代码覆盖率,这与 IDE 为 Python 提供的代码覆盖率类似。测试输出将显示在功能丰富的输出窗口中,该窗口与 IDE 的 JUnit 和 Python 测试运行器所使用的输出窗口相同。
NetBeans IDE 还支持将 Selenium 可移植测试框架与 PHPUnit 结合使用。Selenium 插件可以从更新中心获取。安装此插件会将 Selenium 服务器添加到 IDE 的已注册服务器中,并将 Selenium 测试选项添加到 PHP 菜单。
目录
要学习本教程,您需要具备以下软件和资源。
NetBeans IDE | PHP 下载包 |
PHP 引擎,包括 PEAR | 版本 5。 |
Web 服务器 | 推荐使用 Apache HTTP Server 2.2。 |
PHPUnit | 版本 3.4.0 或更高版本。 |
PHPUnit 的框架生成器 | 作为 PHPUnit 的版本。 |
使用 PEAR 安装 PHPUnit(如 PHPUnit 文档中所述)和 PHPUnit 的框架生成器(如框架生成器文档中所述)。应安装 PHPUnit 版本 3.4.0 或更高版本。无需任何特殊设置。安装 PHPUnit 之后,NetBeans 便可识别它。请注意,您需要将 PEAR 随 PHP 引擎一起安装。另请注意,PHPUnit 文档中指出 PHPUnit 通常会安装到本地 PEAR 目录。该文档还给出了具体的路径:/usr/lib/php/PHPUnit;但在适用于 Windows 的 XAMPP 上,此路径为 XAMPP_HOME\php\PEAR\PHPUnit。
要检查 NetBeans IDE 是否可以识别您的 PHPUnit 安装,请打开 "Tools"(工具)> "Options"(选项)(在 Mac 上,请打开 "NetBeans Preferences"(NetBeans 首选项))并查看 "PHP" 窗口。打开 "Unit Testing"(单元测试)标签。此时应显示您的 PHPUnit 和框架生成器脚本的路径。如果没有显示脚本,请单击空字段旁边的 "Search"(搜索)。IDE 将在您的本地系统中搜索该脚本。或者,单击 "Browse"(浏览)浏览查找脚本。
NetBeans IDE 可以对某个文件中的所有 PHP 类创建并运行 PHPUnit 测试。为确保测试生成器可以正常运行,请为 PHP 文件指定与该文件中的第一类相同的名称。
为某个类创建并运行 PHPUnit 测试:
<?php class Calculator { public function add($a, $b) { return $a + $b; } } ?>
<?php class Calculator { /** * @assert (0, 0) == 0 * @assert (0, 1) == 1 * @assert (1, 0) == 1 * @assert (1, 1) == 2 * @assert (1, 2) == 4 */ public function add($a, $b) { return $a + $b; } } ?>
注:您可以使用标注代码完成来添加 @assert
标注。使用 Tab 键在参数之间导航,或者在填写参数值后单击 Enter。
注:您可以手动为一个项目编写多个测试。如果编写多个测试,可以将它们分类到测试文件目录的子文件夹中,例如 "important" 或 "quick"。然后,可以通过右键单击某个子文件夹并选择 "Run Tests"(运行测试),来运行该文件夹中的测试。
请注意,将为每个 @assert 标注创建一个测试。
/** * Generated from @assert (1, 1) == 2. */ public function testAdd4() { $this->assertEquals( 2, $this->object->add(1, 1) ); }
测试结果的更详细文本版本会显示在 "Output"(输出)窗口中。
您可以选择要在测试套件运行期间执行的测试组。例如,可能有一些测试您希望只在生产环境中运行,而另一些测试在生产和开发环境中同时运行。您可以将前一种测试放在production 组中,而将后一种测试同时放在 production 和 development 组中。在开发环境中运行测试套件时,可以选择只执行 development 测试组。
必须首先对 PHP 项目启用测试组,然后才能对该项目中的所有文件使用测试组。
要将测试标记为测试组的一部分,请使用 @group [group name] 来标注测试方法。
创建和运行测试组:
有关 NetBeans IDE 中 PhpUnit 测试组的详细信息,请参见 "NetBeans IDE for PHP" 博客帖子:Using PHP Unit Test Groups(使用 PHP 单元测试组)。
PHPUnit 测试的结果会显示在 IDE 的 "Test Results"(测试结果)和 "Output"(输出)两个窗口中。"Test Results"(测试结果)窗口包含一个图形窗格和一个简短文本窗格。“"Output"(输出)窗口提供了输出的更详细文本版本。在此部分,您将详细了解 "Test Results"(测试结果)窗口和 "Output"(输出)窗口。
在 "Test Results"(测试结果)窗口中,您可以从下列位置获取有关失败的测试的信息:
"Test Results"(测试结果)窗口在左侧包括以下按钮:
"Output"(输出)窗口显示 PHPUnit 脚本的完整输出。当您无法通过 "Test Results"(测试结果)窗口中的信息找出错误原因时,该窗口会非常有用。与 "Test Results"(测试结果)窗口类似,"Output"(输出)窗口包括指向失败的测试类行的链接。它还在左侧包括用于重新运行测试和用于打开 "PHP Options"(PHP 选项)窗口的按钮。
适用于 PHP 的 NetBeans IDE 提供了代码覆盖率以及 PHPUnit 支持。(IDE 也为 Python 提供了代码覆盖率)。代码覆盖率检查 PHPUnit 测试是否覆盖了所有方法。在此部分,您将了解如何通过现有 Calculator 类来使用代码覆盖率。
使用代码覆盖率:
<?php class Calculator { /** * @assert (0, 0) == 0 * @assert (0, 1) == 1 * @assert (1, 0) == 1 * @assert (1, 1) == 2 * @assert (1, 2) == 4 */ public function add($a, $b) { return $a + $b; } public function add2($a, $b) { return $a + $b; } } ?>
警告:如果在添加 add2 函数之后重新生成测试文件,则不会运行 PHPUnit 测试。这是因为 PHPUnit 创建了两个冲突的 testAdd2 函数。如果您计划对多个此类函数使用 PHPUnit,则不要通过在末尾附加数字的方式来区分函数。请参见 PHPUnit 文档。
在 IDE 中,可以为项目选择以下定制配置:
要设置项目特定的配置,请执行以下操作:
使用定制类加载器的项目需要引导选项,例如,通过实现 Magic 函数 __autoload()。如果需要预先包含一个文件(如定义项目中的多个类所使用的全局常量的文件),则也需要使用引导选项。
可通过 XML 配置文件定义命令行调用中使用的选项。PHPUnit 手册中进行了完整介绍。还可以使用 XML 配置文件为测试用例定义 php.ini 设置和全局变量。也可以在 XML 配置文件中设置引导选项。
如果设置定制测试套件,每次选择 "Run"(运行)> "Test Project"(测试项目)时,都会运行该套件。如果要仅运行一部分测试,或者要使用最近添加(必须手动添加)的 PHPUnit 功能(如数据提供器),该功能特别有用。请注意,您可以根据需要定义多个测试套件,并通过在项目资源管理器中右键单击文件并选择 "run"(运行)来分别运行这些套件。为防止造成混乱,NetBeans 会通知您是否使用定制测试套件。可以在 "Test Results"(测试结果)和 "Output"(输出)窗口中找到通知。
可以将定制 PHPUnit 脚本(而非 "Tools"(工具)> "Options"(选项)中所选的默认脚本)用于项目。定制 PHPUnit 脚本可以包含 PHPUnit 手册中描述的任何命令行开关。
Selenium 是一种测试 Web 应用程序框架的可移植软件。这些测试可以编写为 HTML 表,或以各种常用的编程语言进行编码,并且可以直接在目前的多数 Web 浏览器中运行。Selenium 可以部署在 Windows、Linux 和 Macintosh 上。有关更多详细信息,请参见 Selenium Web 站点。
NetBeans IDE 具有包含 Selenium 服务器的插件。通过此插件,您可以对 PHP、Web 应用程序或 Maven 项目运行 Selenium 测试。要对 PHP 运行 Selenium 测试,需要将 Testing Selenium 软件包安装到 PHP 引擎。
对 PHP 运行 Selenium 测试:
下面是供您探讨的更多思路: