PHP 单元测试(PHPUnit)(2)

简介:

    3.3 示例

    文件 Demo.php:

    <?php
    class Demo
    {
      public function sum($a, $b)
      {
        return $a + $b;
      }

      public function subtract($a, $b)
      {
        return $a - $b;
      }
    }
    ?>

    测试用例:文件 DemoTest.php:

    <?php
    require_once('PHPUnit/Framework.php');
    require_once(dirname(__FILE__). '/Demo.php');

    class DemoTest extends PHPUnit_Framework_TestCase
    {
      public function testSum()
      {
        $demo = new Demo();
        $this->assertEquals(4, $demo->sum(2, 2));
        $this->assertNotEquals(3, $demo->sum(1, 1));
      }
    }
    ?>

    测试结果:

    PHPUnit 3.4.14 by Sebastian Bergmann.
    .
    Time: 0 seconds, Memory: 3.75Mb
    OK (1 test, 3 assertions)

    3.4 示例

    文件 Foo.php:

    <?php
      class Foo
      {
        function foo()
        {
        }

        function formatn($num)
        {
          $num = rtrim($num, "0");
          $pos = STrpos($num, ".");
          $num = str_replace(".", "", $num);
          $count1 = strlen($num);
          $num = ltrim($num, "0");
          $count2 = strlen($num);
          $zeroc = $count1 - $count2;
          $num = substr($num, 0, 6);
          $num = round($num/10);
          //$num = str_pad($num, 5, "0");
          if ($pos !== false)
          {
            $num = str_pad($num, (strlen($num) + $zeroc), "0", STR_PAD_LEFT);
            $dotl = substr($num, 0, $pos);
            $dotr = substr($num, $pos);
            $num = $dotl . "." . $dotr;
          }
          return $num;
        }
      }
    ?>

    测试用例:文件 FooTest.php:

    <?php
    require_once('PHPUnit/Framework.php');
    require_once(dirname(__FILE__). '/Foo.php');

    class fooTest extends PHPUnit_Framework_TestCase
    {
      //这个成员变量是存放要测试的类引用
      private $obj;

      //构造函数
      function fooTest($name)
      {
      }

      //new一个要测试的类为成员变量obj赋值
      function setUp()
      {
        $this->obj = new Foo;
      }

      //unset要测试的类
      function tearDown()
      {
        unset($this->obj);
      }

      //自定义的testcase
      function testformatn1()
      {
        //调用要测试的类的方法,结果放到$result变量
        $result = $this->obj->formatn("100.234");
        //期望结果
        $expected = "100.23";
        //判断是否相等,这里使用assertTrue方法来判断布而值是否为true。
        $this->assertTrue($result == $expected);
      }

      function testformatn2()
      {
        $result = $this->obj->formatn("0.100234");
        $expected = "0.10023";
        $this->assertTrue($result == $expected);
      }

      function testformatn3()
      {
        $result = $this->obj->formatn("0.100235");
        $expected = "0.10024";
        $this->assertTrue($result == $expected);
      }

      function testformatn4()
      {
        $result = $this->obj->formatn("0.000100235");
        $expected = "0.00010024";
        $this->assertTrue($result == $expected);
      }

      function testformatn5()
      {
        $result = $this->obj->formatn("0.000100232");
        $expected = "0.00010023";
        $this->assertTrue($result == $expected);
      }

      function testformatn6()
      {
        $result = $this->obj->formatn("1343");
        $expected = "1343";
        $this->assertTrue($result == $expected);
      }

      function testformatn7()
      {
        $result = $this->obj->formatn("1343.01");
        $expected = "1343";
        $this->assertTrue($result == $expected);
      }

      function testformatn8()
      {
        $result = $this->obj->formatn("1343.05");
        $expected = "1343.1";
        $this->assertTrue($result == $expected);
      }

      function testformatn9()
      {
        $result = $this->obj->formatn("0");
        $expected = "0";
        $this->assertTrue($result == $expected);
      }

      function testformatn10()
      {
        $result = $this->obj->formatn("105.2342");
        $expected = "105.23";
        $this->assertTrue($result == $expected);
      }

      function testformatn11()
      {
        $result = $this->obj->formatn("105.2375");
        $expected = "105.24";
        $this->assertTrue($result == $expected);
      }

      function testformatn12()
      {
        $result = $this->obj->formatn("0.000523751");
        $expected = "0.00052375";
        $this->assertTrue($result == $expected);
      }

      function testformatn13()
      {
        $result = $this->obj->formatn("0.000523755");
        $expected = "0.00052376";
        $this->assertTrue($result == $expected);
      }
    }
    ?>

    测试结果:

    PHPUnit 3.4.14 by Sebastian Bergmann.
    .....F.......
    Time: 0 seconds, Memory: 4.00Mb
    There was 1 failure:

    1) fooTest::testformatn6
    Failed asserting that <boolean:false> is true.

    C:\Program Files\Zend\Apache2\htdocs\unit_test-2\FooTest.php:70

    FAILURES!
    Tests: 13, Assertions: 13, Failures: 1.

    3.5 测试套件示例:

    文件 AllTests.php:

    <?php
    require_once 'PHPUnit/Framework.php';
    require_once 'PHPUnit/TextUI/TestRunner.php';
    require_once 'DemoTest.php';
    require_once 'FooTest.php';

    class AllTests
    {
      public static function suite()
      {
        $suite = new PHPUnit_Framework_TestSuite('Zend Framework - Zend');
        $suite->addTestSuite('DemoTest');
        $suite->addTestSuite('FooTest');
        return $suite;
      }

      public static function main()
      {
        PHPUnit_TextUI_TestRunner::run(self::suite());
      }
    }
    ?>

    测试结果:

    PHPUnit 3.4.14 by Sebastian Bergmann.
    ......F.......
    Time: 0 seconds, Memory: 4.00Mb
    There was 1 failure:

    1) fooTest::testformatn6
    Failed asserting that <boolean:false> is true.

    C:\Program Files\Zend\Apache2\htdocs\unit_test-2\FooTest.php:70

    FAILURES!
    Tests: 14, Assertions: 16, Failures: 1.

    ======================================================================
    相关链接:
    PHPUnit官方:http://www.phpunit.de/
    PHPUnit文档:http://www.phpunit.de/pocket_guide/3.2/en/index.html

    作者:张庆(网眼) 西安 PHP 教育培训中心 2010-7-4
    来自“网眼视界”:http://blog.why100000.com
    作者微博:http://t.qq.com/zhangking
    “十万个为什么”电脑学习网:http://www.why100000.com
 














本文转自网眼51CTO博客,原文链接:http://blog.51cto.com/itwatch/391447,如需转载请自行联系原作者

相关文章
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
|
2月前
|
测试技术 PHP 开发者
原生php单元测试示例
通过上面的示例,我们可以看到,即使在缺乏专门测试框架的情况下,使用原生PHP代码进行基本的单元测试也是完全可行的。当然,对于更复杂的项目,利用像PHPUnit这样的专业工具将带来更多的便利和高级功能。不过,理解单元测试的基本概念和能够手工编写测试是每个PHP开发者的宝贵技能。
29 4
|
2月前
|
测试技术 PHP 开发者
原生php单元测试示例
通过上面的示例,我们可以看到,即使在缺乏专门测试框架的情况下,使用原生PHP代码进行基本的单元测试也是完全可行的。当然,对于更复杂的项目,利用像PHPUnit这样的专业工具将带来更多的便利和高级功能。不过,理解单元测试的基本概念和能够手工编写测试是每个PHP开发者的宝贵技能。
16 1
|
2月前
|
数据库
基于PHP+MYSQL开发制作的趣味测试网站源码
基于PHP+MYSQL开发制作的趣味测试网站源码。可在后台提前设置好缘分, 自己手动在数据库里修改数据,数据库里有就会优先查询数据库的信息, 没设置的话第一次查询缘分都是非常好的 95-99,第二次查就比较差 , 所以如果要你女朋友查询你的名字觉得很好 那就得是她第一反应是查和你的缘分, 如果查的是别人,那不好意思,第二个可能是你。
45 3
|
2月前
|
测试技术 PHP 开发者
原生php单元测试示例
通过上面的示例,我们可以看到,即使在缺乏专门测试框架的情况下,使用原生PHP代码进行基本的单元测试也是完全可行的。当然,对于更复杂的项目,利用像PHPUnit这样的专业工具将带来更多的便利和高级功能。不过,理解单元测试的基本概念和能够手工编写测试是每个PHP开发者的宝贵技能。
13 0
|
4月前
|
设计模式 敏捷开发 监控
深入探究软件自动化测试的策略与实践深入理解PHP中的命名空间
【5月更文挑战第27天】 在软件开发周期中,确保代码质量是至关重要的一环。随着敏捷开发和持续集成的普及,自动化测试成为提升效率和保障软件质量的重要手段。本文将详细探讨自动化测试策略的制定、工具选择以及在实际项目中的执行过程。我们将从自动化测试的基本原则出发,分析不同类型和级别的自动化测试案例,并结合具体实例,讨论如何优化测试流程,减少冗余,提高测试覆盖率和准确性。通过阅读本文,读者将获得一套实用的自动化测试实施框架,以支持其在快速迭代的开发环境中维护高水平的软件品质。 【5月更文挑战第27天】在本文中,我们将探讨PHP中的命名空间(namespace)的概念、用途和实现方式。通过详细解释命名
|
PHP 数据库
对PHP源码的测试
对PHP源码的测试
|
JSON 监控 前端开发
Zabbix监控系统PHP-API开发测试实录
Zabbix监控系统PHP-API开发测试实录
209 0
|
PHP Windows
php环境部署:phpstudy设置本地测试域名找不到hosts文件的解决方案
php环境部署:phpstudy设置本地测试域名找不到hosts文件的解决方案
232 0

热门文章

最新文章

下一篇
云函数