phpunit 学习笔记

使用composer安装phpunit

先初始化 composer

$ composer init
$ composer install

直接的安装是有问题的,因为可能不支持你的php版本,根据http://www.phpunit.cn/选择对应的phpunit版本,直接安装为7.1,在后面带上版本的参数

$ composer require --dev phpunit/phpunit ^6.2

Windows安装phpunit

如果你用了phpstorm,其实这一步并不是必须的,
但是我们有时候需要些一个phpunit.xml文件用命令去执行测试就有些麻烦了

https://phar.phpunit.de/选择合适的版本

我把他们放在和php的同一目录下,因为我php的目录已经设置好了环境变量了

我的目录:C:\xampp\php在这个目录下打开cmd,输入下面这个命令
会创建一个cmd文件,运行phpunit

$ echo @php "%~dp0phpunit.phar" %* > phpunit.cmd

然后我们在其他的目录用cmd运行phpunit --v就可以知道有没有成功了

开始

http://www.phpunit.cn/manual/6.5/zh_cn/writing-tests-for-phpunit.html

先写一个简单的测试用例试试,目录结构:

├───src
│   └───Math.php
├───tests
│   └───MathTest.php
└───vendor

在composer中记得写上自动加载

    "autoload": {
        "psr-4": {
            "Tests\\":"tests/",
            "App\\":"src/"
        }        
    }
<?php
namespace App;
class Math{

    public function add($a,$b){
        return $a+$b;
    }

    public function pow($a,$b){
        return pow($a,$b);
    }
}
<?php
namespace Tests;

use App\Math;
use PHPUnit\Framework\TestCase;
require_once __DIR__.'/../vendor/autoload.php';

class MathTest extends TestCase {

    public function testAdd(){
        $math=new Math();
        $this->assertEquals($math->add(10,20),20);
    }

    public function testPow(){
        $math=new Math();
        $this->assertEquals($math->pow(2,2),4);
    }
}

phpstrom测试

可以在phpstrom中调试,在左边会显示运行和调试的按钮
《phpunit 学习笔记》
《phpunit 学习笔记》
再随便改一下结果$this->assertEquals($math->add(10,20),20);,因为返回的结果和20不等,所以再测试一下就报错了,而且还会提示出你错误的地方

还可以在目录,右键,也会有一个测试的按钮,我们就可以点这个来测试我们这个目录里面所有的测试用例了

phpunit命令测试

http://www.phpunit.cn/manual/6.5/zh_cn/textui.html

貌似有几种方法

//指定目录
$ phpunit test/
//指定测试文件
$ phpunit tests/MathTest.php
//指定方法
$ phpunit tests/MathTest.php --filter "/(::testAdd)( .*)?$/"

还可以在根目录写一个phpunit.xml文件,然后执行一次phpunit来测试我们的项目

http://www.phpunit.cn/manual/6.5/zh_cn/appendixes.configuration.html

各个的参数的意思大多可以再命令行那里找到

<phpunit
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/7.1/phpunit.xsd"
        backupGlobals="true"
        backupStaticAttributes="false"
        bootstrap="vendor/autoload.php"
        cacheTokens="false"
        colors="true"
        convertErrorsToExceptions="true"
        convertNoticesToExceptions="true"
        convertWarningsToExceptions="true"
        forceCoversAnnotation="false"
        mapTestClassNameToCoveredClassName="false">
    <testsuites>
        <testsuite name="Test">
            <directory>./tests</directory>
        </testsuite>
    </testsuites>
</phpunit>

大概摸索了一下,写成这样,能用,但是意思还是没多少明白的,还得继续学习….

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据