測試驅動開發,雖然我接觸這個開發方式不久,但我還是想應用到我們的專案中來。好了,不多說,開幹。
我們使用的測試框架是: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測試...