单元测试对项目维护是很重要滴,一个好的项目先写单元测试,再写业务代码。

使用步骤:

1、下载phpunit。

我是在thinkphp6.0的框架中,

composer require phpunit/phpunit复制代码

Laravel框架则是已经安装好了。

下载好后进入框架目录(本地环境,没有配置全局变量的情况下):vendor/bin

终端执行:

./phpunit --version复制代码

成功的看到phpunit版本信息

2、使用phpunit

在app目录下创建test目录内,新建文件 FirstTest.php

<?php
namespace app\test;
require_once '../../vendor/autoload.php';
use PHPUnit\Framework\TestCase;

class FirstTest extends TestCase
{    public function testTure()    
    {        
        $a = [];        
        $this->assertNull(100);    
    }
}复制代码

在vendor/bin目录中终端执行这个php文件:

./phpunit ../../app/test/FirstTest 
复制代码

可以看到测试结果。

3、讲道理,每个接口都应该写单元测试。

在对接口单元测试的时候;需要引入该文件,new这个对象调用方法。

thinkphp6:

<?php
namespace app\test;
require_once '../../vendor/autoload.php'
use app\admin\controller\Index;
use PHPUnit\Framework\TestCase;

class FirstTest extends TestCase
{   
    public function testTure()    
    {        
        $obj = new Index;
        $this->assertEquals(0,$obj->index(2,3);    
    }
}复制代码

Laravel(比较清晰):

<?phpnamespace 
Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
use Illuminate\Support\Facades\Storage;
class ExampleTest extends TestCase{    
/**     
* A basic test example.     
*     
* @return void     
*/    
    public function testBasicTest()    
    {        
        $response = $this->json('POST','/api/loginConfirm',['loginInfo'=>['username'=>'chen', 'password'=>'peng']]);        
        $response->assertStatus(200)->assertJson(['code'=>200]);    
    }    

    public function testLogoutTest()    
    {        
        $response = $this->json('PUT','/api/logout');        
        $response->assertJson(['code'=>200]);    
    }
}复制代码

tests目录下有测试目录和文件

测试语法看文档。

learnku.com/docs/larave…

断言核心方法

assertArrayEquals(expecteds, actuals)

查看两个数组是否相等。

assertEquals(expected, actual)

查看两个对象是否相等。类似于字符串比较使用的equals()方法

assertNotEquals(first, second)

查看两个对象是否不相等。

assertNull(object)

查看对象是否为空。

assertNotNull(object)

查看对象是否不为空。

assertSame(expected, actual)

查看两个对象的引用是否相等。类似于使用“==”比较两个对象

assertNotSame(unexpected, actual)

查看两个对象的引用是否不相等。类似于使用“!=”比较两个对象

assertTrue(condition)

查看运行结果是否为true。

assertFalse(condition)

查看运行结果是否为false。

assertThat(actual, matcher)

查看实际值是否满足指定的条件

fail()

让测试失败