- 浏览: 1887193 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
wangyudong:
Wisdom RESTClient工具地址更新了哦https: ...
前端模拟POST发送数据-Chrome下的REST Client(接口测试利器) -
wangyudong:
很多REST Client是不支持自动化测试RESTful A ...
前端模拟POST发送数据-Chrome下的REST Client(接口测试利器) -
higkoo:
一个非常棒的系统,要是能支持LDAP等开源认证就完美了。
Cynthia 是个问题管理/BUG管理/任务管理/项目管理系统。 -
寻光之旅:
标签库使用有啥好处呢?
thinkphp 使用标签库的步骤 -
lgdjy123:
Android:TextView属性大全
适用于 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 的版本。 |
安装 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"(浏览)浏览查找脚本。
创建并运行 PHPUnit 测试
NetBeans IDE 可以对某个文件中的所有 PHP 类创建并运行 PHPUnit 测试。为确保测试生成器可以正常运行,请为 PHP 文件指定与该文件中的第一类相同的名称。
为某个类创建并运行 PHPUnit 测试:
- 创建一个名为 Calculator 的 PHP 项目。在此项目中,创建一个名为 Calculator.php 的文件。在此文件中,键入或粘贴 PHPUnit 文档的 "Skeleton Generator"(框架生成器)一章中所提供的 Calculator 类。
<?php class Calculator { public function add($a, $b) { return $a + $b; } } ?>
- 添加一个包含 @assert 标注以及一些样例输入和输出的注释块。请注意,本示例中包括一个错误的断言。
<?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。 - 在 "Projects"(项目)窗口中,右键单击 "Calculator.php" 节点,然后选择 "Tools"(工具)> "Create PHPUnit Tests"(创建 PHPUnit 测试)。请注意,您可以在 "Source Files"(源文件)节点的上下文菜单中为项目中的所有文件创建测试。
- 第一次创建测试时,将会打开一个对话框,询问您要存储测试文件的目录。在本示例中,使用“浏览”功能创建了 tests 目录。
注:您可以手动为一个项目编写多个测试。如果编写多个测试,可以将它们分类到测试文件目录的子文件夹中,例如 "important" 或 "quick"。然后,可以通过右键单击某个子文件夹并选择 "Run Tests"(运行测试),来运行该文件夹中的测试。
- IDE 在一个名为 CalculatorTest.php 的文件中生成框架测试类,在 "Projects"(项目)窗口中会显示该文件,并在编辑器中将其打开。
请注意,将为每个 @assert 标注创建一个测试。
/** * Generated from @assert (1, 1) == 2. */ public function testAdd4() { $this->assertEquals( 2, $this->object->add(1, 1) ); }
- 您既可以测试单个文件,也可以测试整个项目。要测试项目,请右键单击项目的父节点,然后选择 "Test"(测试)或按 Alt-F6 组合键。要测试 Calculator.php 文件,请右键单击该文件的节点,然后选择 "Test"(测试),或者按 Ctrl-F6/⌘-F6 组合键。本示例只有一个文件,且该文件中只有一个类,因此两种测试结果相同。IDE 会运行测试并在 "Test Results"(测试结果)窗口中显示结果。
测试结果的更详细文本版本会显示在 "Output"(输出)窗口中。
使用测试组
您可以选择要在测试套件运行期间执行的测试组。例如,可能有一些测试您希望只在生产环境中运行,而另一些测试在生产和开发环境中同时运行。您可以将前一种测试放在production 组中,而将后一种测试同时放在 production 和 development 组中。在开发环境中运行测试套件时,可以选择只执行 development 测试组。
必须首先对 PHP 项目启用测试组,然后才能对该项目中的所有文件使用测试组。
要将测试标记为测试组的一部分,请使用 @group [group name] 来标注测试方法。
创建和运行测试组:
- 在 "Projects"(项目)窗口中,右键单击 "Calculator" 节点,然后选择 "Properties"(属性)。"Project Properties"(项目属性)打开。
- 在 "Project Properties"(项目属性)中,选择 "PhpUnit" 类别。选择 "Ask for Test Groups Before Running Tests"(在运行测试之前询问测试组)。单击 "OK"(确定)。
- 在编辑器中打开 CalculatorTest.php。
- 为 testAdd、testAdd3 和 testAdd5 方法添加标注 @group production。
- 对于方法 testAdd2 和 testAdd4,添加标注 @group production 和 @group development。
- 右键单击 Calculator.php 节点,然后选择 "Test"(测试)。此时将会打开一个对话框,询问您要运行哪些测试组。选择 "development",然后单击 "OK"(确定)。IDE 只运行使用 @group development 标注的测试。
有关 NetBeans IDE 中 PhpUnit 测试组的详细信息,请参见 "NetBeans IDE for PHP" 博客帖子:Using PHP Unit Test Groups(使用 PHP 单元测试组)。
测试结果和 IDE 输出
PHPUnit 测试的结果会显示在 IDE 的 "Test Results"(测试结果)和 "Output"(输出)两个窗口中。"Test Results"(测试结果)窗口包含一个图形窗格和一个简短文本窗格。“"Output"(输出)窗口提供了输出的更详细文本版本。在此部分,您将详细了解 "Test Results"(测试结果)窗口和 "Output"(输出)窗口。
在 "Test Results"(测试结果)窗口中,您可以从下列位置获取有关失败的测试的信息:
- UI 窗格中失败测试的树条目所附带的消息
- 右侧窗格中的文本,其中包括指向失败的测试代码行的链接
- 将光标悬停在 UI 窗格中失败的测试上时显示的工具提示文本
"Test Results"(测试结果)窗口在左侧包括以下按钮:
- 重新运行测试按钮
- 显示失败的测试
- 显示通过的测试
- 显示通过但出错的测试
- 导航至下一个测试结果的按钮
,以及导航至上一个测试结果的按钮
"Output"(输出)窗口显示 PHPUnit 脚本的完整输出。当您无法通过 "Test Results"(测试结果)窗口中的信息找出错误原因时,该窗口会非常有用。与 "Test Results"(测试结果)窗口类似,"Output"(输出)窗口包括指向失败的测试类行的链接。它还在左侧包括用于重新运行测试和用于打开 "PHP Options"(PHP 选项)窗口的按钮。
代码覆盖率
适用于 PHP 的 NetBeans IDE 提供了代码覆盖率以及 PHPUnit 支持。(IDE 也为 Python 提供了代码覆盖率)。代码覆盖率检查 PHPUnit 测试是否覆盖了所有方法。在此部分,您将了解如何通过现有 Calculator 类来使用代码覆盖率。
使用代码覆盖率:
- 打开 Calculator.php,然后添加内容与 add 函数相同的 add2 函数。现在,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; } } ?>
- 右键单击项目节点。从上下文菜单中,选择 "Code Coverage"(代码覆盖率)> "Collect and Display Code Coverage"(收集并显示代码覆盖率)。默认情况下,"Show Editor Bar"(显示编辑器栏)也会处于选定状态。
- 现在,编辑器会在底部显示代码覆盖率编辑器栏。由于尚未测试代码覆盖率,因此编辑器栏报告覆盖率为 0%。(在单击 "Clear"(清除)以清除测试结果后,编辑器栏也会显示覆盖率为 0%。)
- 单击 "Test"(测试)以测试打开的文件,或单击 "All Tests"(所有测试)以运行项目的所有测试。此时显示 "Test Results"(测试结果)。此外,"Code Coverage"(代码覆盖率)栏会告知您测试所覆盖的可执行代码语句百分比。在编辑器窗口中,覆盖的代码将以绿色突出显示,未覆盖的代码将以红色突出显示。
警告:如果在添加 add2 函数之后重新生成测试文件,则不会运行 PHPUnit 测试。这是因为 PHPUnit 创建了两个冲突的 testAdd2 函数。如果您计划对多个此类函数使用 PHPUnit,则不要通过在末尾附加数字的方式来区分函数。请参见 PHPUnit 文档。
- 在编辑器栏中,单击 "Report..."(报告...)。代码覆盖率报告打开,其中显示了对项目运行的所有测试的结果。使用报告中的按钮,您可以清除结果,再次运行所有测试或取消激活代码覆盖率(单击 "Done"(完成))。
- 您可以在项目中添加其他类;删除测试文件,然后重新创建测试文件;接下来,再次查看代码覆盖率报告。此时将会列出新类。在下面的报告中,Calculator 类又有一个函数未包括在测试中。
使用项目特定的配置
在 IDE 中,可以为项目选择以下定制配置:
- 引导文件
- XML 配置文件
- 测试套件
- 定制 PHPUnit 脚本
要设置项目特定的配置,请执行以下操作:
- 右键单击项目节点或项目的 "Test Files"(测试文件)节点,然后选择 "Properties"(属性)。这会打开 "Properties"(属性)对话框。
- 选择 PHPUnit 类别。此时将打开一个对话框,可以在其中选择定制引导、XML 配置、PHPUnit 脚本或测试套件文件。
- 如果您不熟悉引导或 XML 配置文件的结构,可以使用 NetBeans IDE 生成框架。您还可以通过单击 "Help"(帮助)查找有关使用该对话框的说明。
使用定制类加载器的项目需要引导选项,例如,通过实现 Magic 函数 __autoload()。如果需要预先包含一个文件(如定义项目中的多个类所使用的全局常量的文件),则也需要使用引导选项。
可通过 XML 配置文件定义命令行调用中使用的选项。PHPUnit 手册中进行了完整介绍。还可以使用 XML 配置文件为测试用例定义 php.ini 设置和全局变量。也可以在 XML 配置文件中设置引导选项。
如果设置定制测试套件,每次选择 "Run"(运行)> "Test Project"(测试项目)时,都会运行该套件。如果要仅运行一部分测试,或者要使用最近添加(必须手动添加)的 PHPUnit 功能(如数据提供器),该功能特别有用。请注意,您可以根据需要定义多个测试套件,并通过在项目资源管理器中右键单击文件并选择 "run"(运行)来分别运行这些套件。为防止造成混乱,NetBeans 会通知您是否使用定制测试套件。可以在 "Test Results"(测试结果)和 "Output"(输出)窗口中找到通知。
可以将定制 PHPUnit 脚本(而非 "Tools"(工具)> "Options"(选项)中所选的默认脚本)用于项目。定制 PHPUnit 脚本可以包含 PHPUnit 手册中描述的任何命令行开关。
在 Selenium 框架上运行测试
Selenium 是一种测试 Web 应用程序框架的可移植软件。这些测试可以编写为 HTML 表,或以各种常用的编程语言进行编码,并且可以直接在目前的多数 Web 浏览器中运行。Selenium 可以部署在 Windows、Linux 和 Macintosh 上。有关更多详细信息,请参见 Selenium Web 站点。
NetBeans IDE 具有包含 Selenium 服务器的插件。通过此插件,您可以对 PHP、Web 应用程序或 Maven 项目运行 Selenium 测试。要对 PHP 运行 Selenium 测试,需要将 Testing Selenium 软件包安装到 PHP 引擎。
对 PHP 运行 Selenium 测试:
- 打开命令提示符,然后运行 pear install Testing_Selenium-beta 命令。您需要在 Path 变量中包含 PHP_HOME/php/PEAR。如果成功运行该命令,则将显示以下提示:install ok: channel://pear.php.net/Testing_Selenium-0.4.3。
- 在 IDE 中,打开 "Tools"(工具)> "Plugins"(插件),然后安装 "Selenium Module for PHP"。
- 在 "Projects"(项目)窗口中,右键单击 Calculator 项目的节点。选择 "New"(新建)> "Other"(其他)。此时将打开新建文件向导。选择 "Selenium",然后单击 "Next"(下一步)。
- 第一次创建 Selenium 测试时,将会打开一个对话框,要求您设置 Selenium 测试文件的目录。此目录应不同于 PHPUnit 测试文件的目录。否则,每次运行单元测试时,Selenium 测试都会运行。运行 Selenium 之类的功能测试通常比运行单元测试所花费的时间长,因此在每次运行单元测试时,您可能不会希望运行这些测试。
- 接受 "Name and Location"(名称和位置)页中的默认设置,然后单击 "Finish"(完成)。新 Selenium 测试文件在编辑器中打开,并在 "Projects"(项目)窗口中显示。
- 现在,"Run Selenium Tests"(运行 Selenium 测试)项已添加到项目的上下文菜单中。单击此项,Selenium 测试结果随即显示在与 PHPUnit 测试相同的 "Test Results"(测试结果)窗口中。
更多练习
下面是供您探讨的更多思路:
- 向 Calculator.php 中添加第二个类,例如将 $a 和 $b 相乘的 Calculator2 类。删除并重新生成测试。
- 如果尝试学习包含多个部分的创建 CRUD 应用程序教程,请为最终项目创建 Selenium 测试。
发表评论
-
Lumen写事件
2018-02-10 10:46 8291.在事件里面定义事件 <?php /** * ... -
PHP设计模式之状态机模式-实现业务流控制
2018-01-28 11:16 1836应用场景:在我们日常开发中经常会遇到各种状态的切换,例如电 ... -
装wampserver时显示计算机丢失MSVCR110.dll
2017-03-07 10:15 1238http://www.microsoft.com/zh-CN ... -
phpdocument的使用
2016-10-25 16:24 655官网: https://www.phpdoc.org/ ... -
微信调试方法
2016-05-24 09:25 8101. 在本地搭建类似LAMP的环境(或者WAMP)都行,目的 ... -
创建自己的composer包
2015-12-10 17:01 1006创建一个composer/packagist包 在g ... -
微信nickname乱码及mysql编码格式设置(utf8mb4)
2015-12-08 12:24 1750将数据库的编码设置为utf8mb4_general_ci ... -
docker php 配置
2015-10-28 18:10 1132FROM php:5.6-fpm MAINTAINER S ... -
四种数据存储结构---顺序存储 链接存储 索引存储 散列存储
2015-08-15 21:54 1548存储结构分四类:顺序存储、链接存储、索引存储 和 散列存储。 ... -
分享PHP代码检查经验
2015-08-09 23:03 1665问: 团队十多人开发, 如何保证代码规范统一? http ... -
php过滤只匹配中英文字符串
2015-08-04 15:26 1921<?php $str = "php $ ... -
移除emoji内容
2015-08-04 14:52 1260public static function removeE ... -
php 敏感词过滤高级版
2015-08-04 10:20 1511前面介绍过一个过滤了 ... -
php过滤广告内容(兼职,QQ号,淘宝兼职,网址)
2015-08-04 10:17 1180如果你网站有评论那么你肯定会发现你网站经常会被一人注入广告了 ... -
写第一个PHP扩展, 实现计算数组的个数
2015-07-20 19:09 1372需求: 写第一个PHP扩展, 里面包含一个函数叫 maxw ... -
PHP常用设计模式单例, 工厂, 观察者, 责任链, 装饰, 策略,适配,桥接模式
2015-07-15 11:08 1677// 多态, 在JAVA中是这样用的, 其实在PHP当中可 ... -
php命令行界面
2015-07-16 17:03 994常用选项 php -v php -i ... -
使用phpdocument
2015-07-14 17:05 910pear install phpdoc phpDocumen ... -
将session存储到数据库中
2015-07-14 15:33 841CREATE TABLE sessions ( id ... -
正则表达式向前查找向后查找,环绕或零宽断言
2015-07-14 12:40 2444向前查找和向后查找 1. 向前查找:根据要匹配的字符序列后 ...
相关推荐
在IT行业中,自动化测试是确保软件质量的重要环节,而`phpunit`和`selenium`是两种广泛使用的自动化测试工具。`phpunit`是PHP语言的单元测试框架,它允许开发者编写测试用例来验证代码的功能。`selenium`则是一个跨...
当我们需要在Laravel项目中进行前端交互式测试时,就会结合使用PHPUnit和Selenium WebDriver。 首先,让我们深入了解Laravel的PHPUnit集成。Laravel内置了对PHPUnit的全面支持,使得创建和运行测试变得极其简单。在...
PHPUnitSelenium 该程序包包含一个Selenium2TestCase类,可用于对Selenium 2运行端到端测试。正在安装使用并运行composer require --dev phpunit/phpunit-selenium 。要求版本8.x支持PHPUnit 8.x,并与PHP 7.2+兼容...
当你使用Selenium测试Chrome时,需要这个驱动来控制浏览器的行为。 3. **IEDriverServer.exe**:这是Internet Explorer浏览器的Selenium WebDriver驱动,用于在IE浏览器上进行自动化测试。尽管现在IE的使用率较低,...
PHPUnit(PHP 单元测试框架)简介 ...这个工具也可以被Xdebug扩展用来生成代码覆盖率报告 ,并且可以与phing集成来自动测试,最合它还可以和Selenium整合来完成大型的自动化集成测试。 相关阅读 同类推荐:程序框架
SeleniumTestCaseDoc 覆盖了 PHPUnit_Extensions_SeleniumTestCase 方法的文档(根据 selenium 命令的官方描述)。 重写方法的实现没有改变。安装SeleniumTestCaseDoc 类是 ,它可以混合到任何类中(从 PHPUnit_...
此外,手册还会涵盖更高级的主题,如测试驱动开发(TDD)和行为驱动开发(BDD)的理念,以及如何使用PHPUnit进行持续集成(CI)。还会讨论测试覆盖率分析,帮助开发者了解哪些代码没有被测试覆盖,从而改进测试策略...
【标题】:在这个标题中,我们关注的是"phpunit-and-selenium-course",这表明这是一个关于使用PHPUnit进行单元测试和Selenium进行Web自动化测试的课程,特别针对的是2020年的实践。PHPUnit是PHP编程语言中最广泛...
19. **PHPUnit与Selenium**:结合Selenium进行Web应用程序的自动化功能测试。 20. **持续集成**:如CruiseControl和Apache Maven的集成,使得测试成为CI流程的一部分。 21. **PHPUnit的执行**:详细描述了如何运行...
- **Selenium和Webdriver测试**:如果你需要进行浏览器级别的自动化测试,可以安装`phpunit/phpunit-selenium`和相应的Webdriver库。 - **持续集成**:将PHPUnit集成到持续集成(CI)工具,如Jenkins、Travis CI或...
- **XML配置文件:**使用XML文件来配置测试环境和PHPUnit的行为,例如指定测试目录、定义数据提供者等。 - **命令行选项:**通过命令行参数调整PHPUnit的行为,例如指定测试套件、控制输出格式等。 #### 三、编写...
PHPUnit是Selenium创始人Klaus Silveira所开发的一个开源项目,它遵循xUnit测试框架的设计理念,提供了一套完整的测试工具集,包括断言、模拟对象、测试数据提供、测试报告等。通过PHPUnit,开发者可以编写针对PHP...
- **Selenium集成**: PHPUnit可以与Selenium WebDriver结合,进行Web应用的浏览器自动化测试。 在`phpunit-master`压缩包中,包含了PHPUnit的源码和文档,可以深入学习其内部工作原理,了解如何自定义扩展和适配器...
- **SeleniumServer**: 一种用于Web应用测试的工具,可以与PHPUnit结合使用。 - **PHPUnit_Extensions_Selenium2TestCase**: 提供了与Selenium 2兼容的测试案例类。 - **PHPUnit_Extensions_SeleniumTestCase**: ...
测试用例继承自`PHPUnit\Framework\TestCase`类,通过方法如`setUp()`和`tearDown()`来准备和清理测试环境。每个测试方法都应以`test`开头,且内部包含断言来验证代码行为。 **5. 数据提供者测试** 数据提供者允许...
- **旧版Selenium测试**:使用旧版Selenium API进行测试。 --- #### 十四、日志记录 **测试结果(XML)** - **XML格式**:生成XML格式的测试结果。 **测试结果(TAP)** - **TAP格式**:生成TAP格式的测试结果。 ...
这个工具也可以被Xdebug扩展用来生成代码覆盖率报告 并且可以与phing集成来自动测试 最后它还可以和Selenium整合来完成大型的自动化集成测试 如何部署PHPUnit请参考...
Selenium RC 是 Selenium 测试工具集的一部分,它允许测试者使用多种编程语言(如 Java、Python、Ruby、C#)编写测试脚本,然后通过该远程控制服务器来执行这些脚本,实现跨浏览器、跨平台的网页应用测试。...
PHPUnit是一个轻量级的PHP测试框架。它是在PHP5下面对JUnit3系列版本...这个工具也可以被Xdebug扩展用来生成代码覆盖率报告 ,并且可以与phing集成来自动测试,最后它还可以和Selenium整合来完成大型的自动化集成测试。