zoukankan      html  css  js  c++  java
  • PHPUnit 组织测试

    首先是目录结构

    源文件夹为 src/ 

    测试文件夹为 tests/

    User.php

    <?php
    class Errorcode
    {
        const NAME_IS_NULL = 0;
    }
    
    class User
    {
        public $name;
        public function __construct($name)
        {
            $this->name=$name;
        }
    
        public function Isempty()
        {
    
            try{
                if(empty($this->name))
                {
                    throw new Exception('its null',Errorcode::NAME_IS_NULL);
                }
            }catch(Exception $e){
                return $e->getMessage();
            }
    
            return 'welcome '.$this->name;
        }
    }

    对应的单元测试文件  UserTest.php

    <?php
    use PHPUnitFrameworkTestCase;
    
    class UserTest extends TestCase
    {
        protected $user;
        public function setUp()
        {
            $this->user = new User('');
        }
        public function testIsempty()
        {
            $this->user->name='mark';
            $result =$this->user->Isempty();
            $this->assertEquals('welcome mark',$result);
    
            $this->user->name='';
            $results =$this->user->Isempty();
            $this->assertEquals('its null',$results);
    
        }
    
    
    }

    第二个单元测试代码因为要引入 要测试的类  这里可以用 自动载入 避免文件多的话 太多include  

    所以在src/ 文件夹里写 autoload.php

    <?php
    
    function __autoload($class){
        include $class.'.php';
    }
    
    spl_autoload_register('__autoload');

    当需要User类时,就去include User.php。写完__autoload()函数之后要用spl_autoload_register()注册上。

    虽然可以自动载入,但是要执行的命令变得更长了。

    打开cmd命令如下

    phpunit --bootstrap src/autoload.php tests/UserTest
    

    所以我们还可以在根目录写一个配置文件phpunit.xml来为项目指定bootstrap,这样就不用每次都写在命令里了。

    phpunit.xml

    <phpunit bootstrap="src/autoload.php">
    </phpunit>

    然后

    打开cmd命令 执行MoneyTest 命令如下

    phpunit tests/UserTest
    

    打开cmd命令 执行tests下面所有的文件 命令如下  

    phpunit tests
    

      

  • 相关阅读:
    版本控制-搭建git服务器
    借助阿里AntUI元素实现两个Web页面之间的过渡——“Loading…”
    在VS中自定义代码段
    案例研究:CopyToAsync
    与其他.Net异步模式和类型进行互操作
    使用boilerplate模版创建解决方案
    实践基于Task的异步模式
    实现基于Task的异步模式
    基于Task的异步模式的定义
    基于Task的异步模式--全面介绍
  • 原文地址:https://www.cnblogs.com/foreversun/p/6837147.html
Copyright © 2011-2022 走看看