接到了個(gè)任務(wù),需要對(duì)數(shù)字進(jìn)行計(jì)算,因?yàn)樯婕暗秸麛?shù),小數(shù),和科學(xué)計(jì)數(shù)法等很多條件,所以人工測(cè)試非常麻煩,于是想到了PHP的單元測(cè)試工具PHPUnit,所以寫(xiě)個(gè)文檔備查。
看了PHPUnit的文檔之后基本有了一些了解,
http://pear.php.net/manual/en/packages.php.phpunit.intro.php
工作流程如下:
1.設(shè)計(jì)你的class/API
2.創(chuàng)建測(cè)試程序集
3.實(shí)現(xiàn)class/API
4.運(yùn)行測(cè)試
5.修正測(cè)試失敗或錯(cuò)誤,回到第4步。
我們來(lái)舉個(gè)例子:
下面是你要測(cè)試的class,其中formatn函數(shù)一個(gè)取任意數(shù)字的5位有效數(shù)字的函數(shù)。
CODE:
----------format_number.php-----------
class fo {
function fo() {
}
function formatn($num) {
$num = rtrim($num,"0");
$pos = strpos($num,".");
$num = str_replace(".","",$num);
$count1 = strlen($num);
$num = ltrim($num,"0");
$count2 = strlen($num);
$zeroc = $count1 - $count2;
$num = substr($num,0,6);
$num = round($num/10);
//$num = str_pad($num, 5, "0");
if ($pos !== false) {
$num = str_pad($num, (strlen($num)+$zeroc), "0", STR_PAD_LEFT);
$dotl = substr($num,0,$pos);
$dotr = substr($num,$pos);
$num = $dotl.".".$dotr;
}
return $num;
}
}
接著創(chuàng)建TestCase,繼承自PHPUnit_TestCase
CODE:
----------testcase.php-----------
require_once 'format_number.php';
require_once 'PHPUnit.php';
class foTest extends PHPUnit_TestCase {
//這個(gè)成員變量是存放要測(cè)試的類(lèi)引用
var $abc;
//構(gòu)造函數(shù)
function foTest($name) {
$this->;PHPUnit_TestCase($name);
}
//new一個(gè)要測(cè)試的類(lèi)為成員變量abc賦值
function setUp() {
$this->;abc = new fo;
}
//unset要測(cè)試的類(lèi)
function tearDown() {
unset($this->;abc);
}
//自定義的testcase
function testFormatn1() {
//調(diào)用要測(cè)試的類(lèi)的方法,結(jié)果放到$result變量
$result = $this->;abc->;formatn("100.234");
//期望結(jié)果
$expected = "100.23";
//判斷是否相等,這里使用assertTrue方法來(lái)判斷布而值是否為true。
$this->;assertTrue($result == $expected);
}
function testFormatn2() {
$result = $this->;abc->;formatn("0.100234");
$expected = "0.10023";
$this->;assertTrue($result == $expected);
}
function testFormatn3() {
$result = $this->;abc->;formatn("0.100235");
$expected = "0.10024";
$this->;assertTrue($result == $expected);
}
function testFormatn4() {
$result = $this->;abc->;formatn("0.000100235");
$expected = "0.00010024";
$this->;assertTrue($result == $expected);
}
function testFormatn5() {
$result = $this->;abc->;formatn("0.000100232");
$expected = "0.00010023";
$this->;assertTrue($result == $expected);
}
function testFormatn6() {
$result = $this->;abc->;formatn("1343");
$expected = "1343";
$this->;assertTrue($result == $expected);
}
function testFormatn7() {
$result = $this->;abc->;formatn("1343.01");
$expected = "1343";
$this->;assertTrue($result == $expected);
}
function testFormatn8() {
$result = $this->;abc->;formatn("1343.05");
$expected = "1343.1";
$this->;assertTrue($result == $expected);
}
function testFormatn9() {
$result = $this->;abc->;formatn("0");
$expected = "0";
$this->;assertTrue($result == $expected);
}
function testFormatn10() {
$result = $this->;abc->;formatn("105.2342");
$expected = "105.23";
$this->;assertTrue($result == $expected);
}
function testFormatn11() {
$result = $this->;abc->;formatn("105.2375");
$expected = "105.24";
$this->;assertTrue($result == $expected);
}
function testFormatn12() {
$result = $this->;abc->;formatn("0.000523751");
$expected = "0.00052375";
$this->;assertTrue($result == $expected);
}
function testFormatn13() {
$result = $this->;abc->;formatn("0.000523755");
$expected = "0.00052376";
$this->;assertTrue($result == $expected);
}
}