搜索
首页后端开发php教程phpunit功能点整理_PHP教程
phpunit功能点整理_PHP教程Jul 14, 2016 am 10:07 AM
functionphpphpunitprotected创建功能场景数组整理设置

 
 
设置场景
创建数组Fixtures
 
[php]  
protected function setUp()  
{  
// 创建数组fixture。  
$this->fixture = array();  
}  
 
 
 
 
“套件级装配器” 共享fixture即sharedFixture
PHPUnit_Framework_TestSuite对象的$sharedFixture属性在PHPUnit_Framework_TestSuite对象集合及PHPUnit_Framework_TestCase对象中都可用。
[php] 
protected function setUp()  
{  
$this->sharedFixture = new PDO(  
  'mysql:host=wopr;dbname=test',  
  'root',  
  ''  
);  
}  
 
 
 
 
provider数据提供者
 
 
使用数据提供者
 
组织测试套件
 
 
 
PHPUnit框架的PHPUnit_Framework_TestSuite类允许我们将一些测试组织在若干测试套件构成的一个层次结构中。让我们通过一个例子看看PHPUnit特有的测试套件。
 
 
范例 7.1显示一个删节版本的Tests/AllTests.php,范例 7.2显示一个删节版本的Tests/Framework/AllTests.php。 
 
第一级:
[php] 
if (!defined('PHPUnit_MAIN_METHOD')) {  
    define('PHPUnit_MAIN_METHOD', 'AllTests::main');  
}  
   
require_once 'PHPUnit/Framework.php';  
require_once 'PHPUnit/TextUI/TestRunner.php';  
   
require_once 'Framework/AllTests.php';  
// ...  
   
class AllTests  
{  
    public static function main()  
    {  
        PHPUnit_TextUI_TestRunner::run(self::suite());  
    }  
   
    public static function suite()  
    {  
        $suite = new PHPUnit_Framework_TestSuite('PHPUnit');  
   
        $suite->addTest(Framework_AllTests::suite());  
        // ...  
   
        return $suite;  
    }  
}  
   
if (PHPUnit_MAIN_METHOD == 'AllTests::main') {  
    AllTests::main();  
}  
?>  
 
 
 
第二级:
 
[php]  
if (!defined('PHPUnit_MAIN_METHOD')) {  
    define('PHPUnit_MAIN_METHOD', 'Framework_AllTests::main');  
}  
   
require_once 'PHPUnit/Framework.php';  
require_once 'PHPUnit/TextUI/TestRunner.php';  
   
require_once 'Framework/AssertTest.php';  
// ...  
   
class Framework_AllTests  
{  
    public static function main()  
    {  
        PHPUnit_TextUI_TestRunner::run(self::suite());  
    }  
   
    public static function suite()  
    {  
        $suite = new PHPUnit_Framework_TestSuite('PHPUnit Framework');  
   
        $suite->addTestSuite('Framework_AssertTest');  
        // ...  
   
        return $suite;  
    }  
}  
   
if (PHPUnit_MAIN_METHOD == 'Framework_AllTests::main') {  
    Framework_AllTests::main();  
}  
?>  
 
 
 
第三级:
[php]  
/** 
 * PHPunit测试套件 
 * /tests/Framework/Framework/AssertTest.php 
 * @anthor Chen Wei Han 
 * @copyright  2011-7-6下午02:10:29 
 * @package phpunit 
 * @todo 
 */  
//require_once 'PHPUnit/Framework.php';  
class Framework_Framework_AssertTest extends PHPUnit_Framework_TestCase{     
 public function testNewArrayIsEmpty()     
 {    
  // 创建数组fixture。         
  $fixture = array();          
  // 断言数组fixture的尺寸是0。         
  $this->assertEquals(0, sizeof($fixture));     
 }  
      
 public function testArrayContainsAnElement()     
 {    
  // 创建数组fixture。         
  $fixture = array();          
  // 向数组fixture增加一个元素。         
  $fixture[] = 'Element';          
  //断言数组fixture的尺寸是1。         
  $this->assertEquals(1, sizeof($fixture));     
 }  
}  
?>  
 
 
 
类Framework_AssertTest是个扩展了PHPUnit_Framework_TestCase的标准测试用例。
 
运行Tests/AllTests.php则使用TextUI测试启动器运行全部测试,然而运行Tests/Framework/AllTests.php则只运行类PHPUnit_Framework_*的测试。
 
 
 
套件级装配器
 
类PHPUnit_Framework_TestSuite提供两个模板方法,setUp()和tearDown(),它们分别在测试套件的首个测试前和最后测试后被调用。
[php] 
require_once 'MyTest.php';  
   
class MySuite extends PHPUnit_Framework_TestSuite  
{  
    public static function suite()  
    {  
        return new MySuite('MyTest');  
    }  
   
    protected function setUp()  
    {  
        print "\nMySuite::setUp()";  
    }  
   
    protected function tearDown()  
    {  
        print "\nMySuite::tearDown()";  
    }  
}  
?>  
 
 
 
未完成和跳过的测试
 
public function testSomething()
{
}
 
如果我们分别将成功的测试和失败的必做绿灯和红灯,我们还需要黄灯标记未完成或未实现的测试。PHPUnit_Framework_IncompleteTest是个标记接口,用于标记当测试结果为未完成或当前未实现时引发的异常。
 
[php]  
require_once 'PHPUnit/Framework.php';  
   
class SampleTest extends PHPUnit_Framework_TestCase  
{  
    public function testSomething()  
    {  
        //可选:随便测试什么都可以。  
        $this->assertTrue(TRUE, 'This should already work.');  
   
        // 在这儿停住并将测试标记为未完成。  
        $this->markTestIncomplete(  
          'This test has not been implemented yet.'  
        );  
    }  
}  
?>  
 
 
 
跳过的测试
 
特定的环境中并非所有的测试都能运行。考虑个例子,一个具有多个驱动以支持不同数据库系统的数据库提取层。MySQL驱动的测试当然只能在MySQL服务器上运行。 $this->markTestSkipped
 
[php] 
require_once 'PHPUnit/Framework.php';  
   
class DatabaseTest extends PHPUnit_Framework_TestCase  
{  
    protected function setUp()  
    {  
        if (!extension_loaded('mysqli')) {  
            $this->markTestSkipped(  
              'The MySQLi extension is not available.'  
            );  
        }  
    }  
   
    public function testConnection()  
    {  
        // ...  
    }  
}  
?>  
 
 
 
 
PHPUnit_Framework_TestResult
 
当你在运行所有这些测试时,你需要在某处存储所有结果:运行了多少测试,哪个失败了,以及他们耗时多久。
 
PHPUnit自带两个具体的测试装饰者:PHPUnit_Extensions_RepeatedTest和PHPUnit_Extensions_TestSetup。前一个用于重复运行一个测试,并且只当所有迭代都成功时才算成功。后面一个在第 6 章中讨论过。
 
 要定制PHPUnit_Framework_TestResult,没必要编写它的整个子类。大多时候,实现一个新PHPUnit_Framework_TestListener(见表 22.14)并在运行测试前附在PHPUnit_Framework_TestResult对象上就够了。
 
范例 23.4: 运行和观测测试套件
[php]  www.2cto.com
require_once 'PHPUnit/Framework.php';  
   
require_once 'ArrayTest.php';  
require_once 'SimpleTestListener.php';  
   
// 创建一个包括测试套件,来自类ArrayTest的测试。  
$suite = new PHPUnit_Framework_TestSuite('ArrayTest');  
   
// 创建一个测试结果,并附上一个SimpleTestListener对象作为对它的观测者。  
$result = new PHPUnit_Framework_TestResult;  
$result->addListener(new SimpleTestListener);  
   
// 运行测试。  
$suite->run($result);  
?>  
 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/477859.htmlTechArticle设置场景 创建数组Fixtures [php] protected function setUp() { // 创建数组fixture。 $this-fixture = array(); } 套件级装配器 共享fixture即sharedFixture PHPUnit_F...
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
PHP开发中如何使用PHPUnit进行Mock测试PHP开发中如何使用PHPUnit进行Mock测试Jun 27, 2023 am 10:25 AM

在PHP开发中,测试是非常重要的一个环节,测试可以大大减少错误的发生,提高代码质量。Mock测试是测试中的一种形式,它可以模拟出虚假的对象或数据,以便测试我们代码的某个特定功能或场景。PHPUnit是PHP中非常流行的一个测试框架,它支持Mock测试。在这篇文章中,我们将探讨如何使用PHPUnit进行Mock测试。一、什么是Mock测试在开始之前,我们先来了

PHP中的测试报告工具PHP中的测试报告工具May 24, 2023 am 08:24 AM

PHP是一种常见的开源编程语言,广泛应用于Web开发中,它的优点就在于易学、易用、可拓展性强等优点。而作为开发者,我们为了在保证代码质量的同时提高开发效率,必不可少的就是测试和测试报告的使用。在PHP开发中,有很多测试和测试报告工具,其中最常见的就是PHPUnit。然而,PHPUnit虽然简单易用,但是需要一些编写测试用例的基础知识,如果不熟悉,使用起来还是

如何使用PHP和PHPUnit检查代码规范和质量如何使用PHP和PHPUnit检查代码规范和质量Jun 25, 2023 pm 04:57 PM

在现代的软件开发中,代码质量和规范是极为重要的因素。不仅可以让代码更加整洁易于维护,还可以提高代码的可读性和可扩展性。但是,如何检查代码的质量和规范呢?本文将介绍如何使用PHP和PHPUnit来实现这一目标。第一步:检查代码规范在PHP开发中,有一种非常流行的代码规范,它被称为PSR(PHP标准规范)。PSR规范的目的是使PHP代码更具可读性和可维护性。其中

PHP中的代码检查工具PHP中的代码检查工具May 24, 2023 pm 12:01 PM

检查代码质量是每个程序员都必须要做的任务,而PHP中也有很多工具可以用于检查代码的质量和风格,从而提高代码的可读性和可维护性,提高代码的可靠性和安全性。本文将介绍几种常见的PHP代码检查工具,并对它们进行简单的比较和评估,希望可以帮助读者在开发过程中选择合适的工具,提高代码质量和效率。PHP_CodeSnifferPHP_CodeSniffer是一个广泛应用

PHP编程中有哪些常见的代码质量工具?PHP编程中有哪些常见的代码质量工具?Jun 12, 2023 am 08:16 AM

PHP编程中有哪些常见的代码质量工具?在现代的软件开发中,代码质量是非常重要的。如果代码质量不好,不仅会降低代码的可读性,增加维护难度,还会造成安全漏洞等一系列问题。而在PHP编程中,我们可以使用一些代码质量工具来检查代码的质量。本文将介绍一些常见的PHP代码质量工具。PHP_CodeSnifferPHP_CodeSniffer是一个用于静态分析PHP代码的

php如何使用PHPUnit和Mockery进行单元测试?php如何使用PHPUnit和Mockery进行单元测试?May 31, 2023 pm 04:10 PM

在PHP项目开发中,单元测试是一项很重要的任务。PHPUnit和Mockery是两个相当流行的PHP单元测试框架,其中PHPUnit是一个被广泛使用的单元测试工具,而Mockery则是一个专注于提供统一而简洁的API以创建和管理对象Mock的对象模拟工具。通过使用PHPUnit和Mockery,开发人员可以快速高效地进行单元测试,以确保代码库的正确性和稳定性

如何使用PHPUnit进行PHP单元测试如何使用PHPUnit进行PHP单元测试May 12, 2023 am 08:13 AM

随着软件开发行业的发展,测试逐渐成为了不可或缺的一部分。而单元测试作为软件测试中最基础的一环,不仅能够提高代码质量,还能够加快开发者开发和维护代码的速度。在PHP领域,PHPUnit是一个非常流行的单元测试框架,它提供了各种功能来帮助我们编写高质量的测试用例。在本文中,我们将介绍如何使用PHPUnit进行PHP单元测试。安装PHPUnit在使用PHPUnit

PHP Jenkins 与 PHPUnit:单元测试 PHP 代码PHP Jenkins 与 PHPUnit:单元测试 PHP 代码Mar 09, 2024 am 10:10 AM

PHPUnitはphpでのユニットテストを効率化するためのフレームワークです。jenkinsと組み合わせると、CI(継続的インテグレーション)プロセスにテストを組み込み、コード変更のたびにテストを実行できます。JenkinsのPHPUnitプラグインJenkinsのPHPUnitプラグインを使用すると、JenkinsジョブにPHPUnitテストを簡単に追加できます。このプラグインは、テストの実行、結果の表示、および失敗したテストの自動通知を行います。PHPUnitのインストールと構成PHPUni

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版