PHP 单元测试(PHPUnit)(2)

本文通过具体示例展示了如何使用PHPUnit进行单元测试,包括基本算术运算的测试和数值格式化的复杂测试场景,并构建了测试套件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.3 示例

文件 Demo.php:

<?php
class Demo
{
public function sum($a, $b)
{
return $a + $b;
}

public function subtract($a, $b)
{
return $a - $b;
}
}
?>

测试用例:文件 DemoTest.php:

<?php
require_once('PHPUnit/Framework.php');
require_once(dirname(__FILE__). '/Demo.php');

class DemoTest extends PHPUnit_Framework_TestCase
{
public function testSum()
{
$demo = new Demo();
$this->assertEquals(4, $demo->sum(2, 2));
$this->assertNotEquals(3, $demo->sum(1, 1));
}
}
?>

测试结果:

PHPUnit 3.4.14 by Sebastian Bergmann.
.
Time: 0 seconds, Memory: 3.75Mb
OK (1 test, 3 assertions)

3.4 示例

文件 Foo.php:

<?php
class Foo
{
function foo()
{
}

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;
}
}
?>

测试用例:文件 FooTest.php:

<?php
require_once('PHPUnit/Framework.php');
require_once(dirname(__FILE__). '/Foo.php');

class fooTest extends PHPUnit_Framework_TestCase
{
//这个成员变量是存放要测试的类引用
private $obj;

//构造函数
function fooTest($name)
{
}

//new一个要测试的类为成员变量obj赋值
function setUp()
{
$this->obj = new Foo;
}

//unset要测试的类
function tearDown()
{
unset($this->obj);
}

//自定义的testcase
function testformatn1()
{
//调用要测试的类的方法,结果放到$result变量
$result = $this->obj->formatn("100.234");
//期望结果
$expected = "100.23";
//判断是否相等,这里使用assertTrue方法来判断布而值是否为true。
$this->assertTrue($result == $expected);
}

function testformatn2()
{
$result = $this->obj->formatn("0.100234");
$expected = "0.10023";
$this->assertTrue($result == $expected);
}

function testformatn3()
{
$result = $this->obj->formatn("0.100235");
$expected = "0.10024";
$this->assertTrue($result == $expected);
}

function testformatn4()
{
$result = $this->obj->formatn("0.000100235");
$expected = "0.00010024";
$this->assertTrue($result == $expected);
}

function testformatn5()
{
$result = $this->obj->formatn("0.000100232");
$expected = "0.00010023";
$this->assertTrue($result == $expected);
}

function testformatn6()
{
$result = $this->obj->formatn("1343");
$expected = "1343";
$this->assertTrue($result == $expected);
}

function testformatn7()
{
$result = $this->obj->formatn("1343.01");
$expected = "1343";
$this->assertTrue($result == $expected);
}

function testformatn8()
{
$result = $this->obj->formatn("1343.05");
$expected = "1343.1";
$this->assertTrue($result == $expected);
}

function testformatn9()
{
$result = $this->obj->formatn("0");
$expected = "0";
$this->assertTrue($result == $expected);
}

function testformatn10()
{
$result = $this->obj->formatn("105.2342");
$expected = "105.23";
$this->assertTrue($result == $expected);
}

function testformatn11()
{
$result = $this->obj->formatn("105.2375");
$expected = "105.24";
$this->assertTrue($result == $expected);
}

function testformatn12()
{
$result = $this->obj->formatn("0.000523751");
$expected = "0.00052375";
$this->assertTrue($result == $expected);
}

function testformatn13()
{
$result = $this->obj->formatn("0.000523755");
$expected = "0.00052376";
$this->assertTrue($result == $expected);
}
}
?>

测试结果:

PHPUnit 3.4.14 by Sebastian Bergmann.
.....F.......
Time: 0 seconds, Memory: 4.00Mb
There was 1 failure:

1) fooTest::testformatn6
Failed asserting that <boolean:false> is true.

C:\Program Files\Zend\Apache2\htdocs\unit_test-2\FooTest.php:70

FAILURES!
Tests: 13, Assertions: 13, Failures: 1.

3.5 测试套件示例:

文件 AllTests.php:

<?php
require_once 'PHPUnit/Framework.php';
require_once 'PHPUnit/TextUI/TestRunner.php';
require_once 'DemoTest.php';
require_once 'FooTest.php';

class AllTests
{
public static function suite()
{
$suite = new PHPUnit_Framework_TestSuite('Zend Framework - Zend');
$suite->addTestSuite('DemoTest');
$suite->addTestSuite('FooTest');
return $suite;
}

public static function main()
{
PHPUnit_TextUI_TestRunner::run(self::suite());
}
}
?>

测试结果:

PHPUnit 3.4.14 by Sebastian Bergmann.
......F.......
Time: 0 seconds, Memory: 4.00Mb
There was 1 failure:

1) fooTest::testformatn6
Failed asserting that <boolean:false> is true.

C:\Program Files\Zend\Apache2\htdocs\unit_test-2\FooTest.php:70

FAILURES!
Tests: 14, Assertions: 16, Failures: 1.

======================================================================
相关链接:
PHPUnit官方:http://www.phpunit.de/
PHPUnit文档:http://www.phpunit.de/pocket_guide/3.2/en/index.html

作者:张庆(网眼) 西安 PHP 教育培训中心 2010-7-4
来自“网眼视界”:http://blog.why100000.com
作者微博:http://t.qq.com/zhangking
“十万个为什么”电脑学习网:http://www.why100000.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值