1 对于继承自PHPUnit_Framework_TestSuite的类,Phpunit会自动执行suite()方法。
2 PHPUnit_Framework_TestSuite还有两个模板方法setUp(), tearDown();会在执行整个测试套件之前和之后运行。
顺序suite()-->setUp()-->添加的测试集-->tearDown(),setup 可以初始化数据库连接,session值等等,tearDown 释放资源
<?php
//demo.php业务类定义
class Demo{
public function add($a, $b){
return $a + $b;
}
}
?>
<?
//TestCase.php 测试类
require("demo.php");
class DemoTest extends PHPUnit_Framework_TestCase{
//共享资源
protected $_obj;
// SetUp方法是在每个测试用例运行前进行一些初始化的工作,比如创建业务对象,让其他测试方法也可以使用业务对象,或数据库连接对象
public function setUp(){
$this->_obj = new Demo();
}
//tearDown则在每个测试用例运行后进行一些比如资源的释放等工作的工作
public function tearDown(){
unset($this->_obj);
}
//testAdd 方法名以test* 开头
public function testAdd(){
$res = $this->_obj->add(1, 2);
//phpunit的断言assertEquals判断输出是否和预期的相等,phpunit 还提供很多断言方法
$this->assertEquals(3, $res);
}
//testAdd2 方法注解为@test
/**
* @test
*/
public function testAdd2(){
$res = $this->_obj->add(1, 2);
/*phpunit的断言assertEquals判断输出是否和预期的相等,phpunit 还提供很多断言方法
AssertTrue/AssertFalse 断言是否为真值还是假
AssertEquals 判断输出是否和预期的相等
AssertGreaterThan 断言结果是否大于某个值,同样的也有LessThan(小于),GreaterThanOrEqual(大于等于),
LessThanOrEqual(小于等于).
AssertContains 判断输入是否包含指定的值
AssertType 判断是否属于指定类型
AssertNull 判断是否为空值
AssertFileExists 判断文件是否存在
AssertRegExp 根据正则表达式判断
*/
$this->assertEquals(3, $res);
}
}
?>
<?php
// 测试套件TestSuite.php
require_once 'PHPUnit/Autoload.php';
class MyTestSuite extends PHPUnit_Framework_TestSuite {
//共享资源
protected $_db;
public function __construct(){
$this->addTestFile('TestCase.php');
}
// SetUp方法是在每个测试用例运行前进行一些初始化的工作,比如创建业务对象,让其他测试方法也可以使用业务对象,或数据库连接对象
public function setUp(){
$this->_db = new PDO();
}
//tearDown则在每个测试用例运行后进行一些比如资源的释放等工作的工作
public function tearDown(){
unset($this->_db);
}
//注意此处设置为static
public static function suite() {
//最后一定得返回PHPUnit_Framework_TestSuite对像
return new self();
}
}
?>
//执行命令
phpunit TestSuite.php
或
<?php
// 测试套件TestSuite.php
require_once 'PHPUnit/Autoload.php';
$suite = new PHPUnit_Framework_TestSuite();
$suite->addTestFile('TestCase.php');
PHPUnit_TextUI_TestRunner::run($suite);
?>
//执行命令
phpunit TestSuite.php
或
<?php
// 测试套件TestSuite.php
require_once 'PHPUnit/Autoload.php';
//加载测试类文件
require_once 'TestCase.php';
require_once 'TestCase5555.php';
class MyTestSuite{
public static function main() {
PHPUnit_TextUI_TestRunner::run(self::suite());
}
public static function suite() {
//TestCase,TestCase555 都是类名
$suite = new PHPUnit_Framework_TestSuite("TestCase");
$suite->addTestSuite("TestCase555");
return $suite;
}
}
?>
//执行命令
phpuint TestSuite.php