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
    

      

  • 相关阅读:
    题解 CF171G 【Mysterious numbers
    题解 P1157 【组合的输出】
    题解 P3955 【图书管理员】
    题解 P2036 【Perket】
    题解 CF837A 【Text Volume】
    题解 CF791A 【Bear and Big Brother】
    题解 CF747A 【Display Size】
    题解 P1332 【血色先锋队】
    题解 P2660 【zzc 种田】
    题解 P4470 【[BJWC2018]售票】
  • 原文地址:https://www.cnblogs.com/foreversun/p/6837147.html
Copyright © 2011-2022 走看看