手擼php框架2 1 使用測試框架phpunit

2021-08-14 20:49:44 字數 1690 閱讀 7413

測試驅動開發,雖然我接觸這個開發方式不久,但我還是想應用到我們的專案中來。好了,不多說,開幹。

我們使用的測試框架是:phpunit

1.phpunit安裝

在composer.json檔案的require-dev下,新增 「phpunit/phpunit」: 「>=6.5.0」,使用哪個版本,需要根據php版本和你自己的喜好決定,然後執行composer update即可

2.一般在專案根目錄下執行:./vendor/bin/phpunit tests 即可,tests是測試檔案所在的目錄,我們的測試檔案放到和vendor同級的tests中,所以引數是tests

3.封裝phpunit的testcase類

我們不直接使用phpunit提供的testcase類,而是自己封裝一層,叫做tanktestcase,放到tests檔案的根目錄下,**如下:

<?php

namespace

tankunit;

usephpunit\framework\testcase;

abstract

class

tanktestcase

extends

testcase

4.在使用yii框架時,我們一般有乙個入口指令碼:web/index.php,index.php中引入了我們的專案核心檔案yii,和composer的類自動載入檔案vendor/autoload.php。在我們的tank框架中,我們也打算使用這種方式。但是,在寫測試**的時候,我們怎麼引入這些檔案呢?不用著急,phpunit提供了在測試之前引入某些檔案的方式:–bootstrap path/to/bootstrapfile

在我們的專案中,bootstrap.php檔案放到了tests的根目錄下,所以執行測試時要執行這條命令:

./vendor/bin/phpunit tests –bootstrap tests/bootstrap.php

bootstrap.php中會引入我們的核心類tank,composer的自動載入檔案vendor/autoload.php,還有我們封裝的phpunit的測試類tanktestcase,**如下:

<?php

error_reporting(-1);

define('tank_debug', true);

$_server['script_name'] = '/' . __dir__;

$_server['script_filename'] = __file__;

$composerautoloadfile = __dir__ . '/../vendor/autoload.php';

if (is_file($composerautoloadfile))

require_once

__dir__ . '/../framework/tank.php';//引入我們的框架核心類

require_once

__dir__ . '/tanktestcase.php';//引入封裝的測試類

ok,到這裡,我們的測試部分完事了,之後我們在開發時把測試**寫入相應的tests下的檔案中,然後在專案根目錄下執行./vendor/bin/phpunit tests –bootstrap tests/bootstrap.php即可。

欲知下事如何,且聽下回分解……

github原始碼:

手擼php框架3 2 構建Tank類

作為在實際中使用的核心類,沒有什麼可說的,它直接繼承basetank類,如果需要新增什麼特性 完全可以在這裡寫。但是我們並沒有什麼新奇的想法,所以嘞,直接繼承了事!哦,我們在入口指令碼引入tank類時,是通過require或include直接引入tank.php檔案完成的。所以,我們可以在tank....

手擼簡易spring框架(二)

private void refresh throws exception 完成beandefinitionreader中的構造方法,流程分為三步走 儲存了所有bean的classname private list registybeanclasses newarraylist public bea...

使用bamboo測試框架

bamboo測試框架好用是好用,但是有一套規則,必須按這套規則寫,才能順利地跑起來。下面是幾大規則 list 1 測試 的檔案必須取名 tests.lua 測試 檔案必須引入測試框架 local testing require bamboo.testing 測試 中使用telescope lua測試...