php使用单元测试phpunit

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

使用步骤:

1、下载phpunit。

我是在thinkphp6.0的框架中,

1
bash复制代码composer require phpunit/phpunit

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

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

终端执行:

1
bash复制代码./phpunit --version

成功的看到phpunit版本信息

2、使用phpunit

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

1
2
3
4
5
6
7
8
9
10
11
12
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文件:

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

可以看到测试结果。

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

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

thinkphp6:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
php复制代码<?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(比较清晰):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
php复制代码<?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()

让测试失败

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%