yaf框架单元测试
代码目录结构:
项目目录 application控制器和视图目录 configsini配置文件目录 libraryDao、Model、Service层目录 public入口文件目录 tests单元测试目录 api测试用例目录 bootstrap.php单元测试初始化文件 vendor第三方库(composer) composer.jsoncomposer依赖文件 phpunit.xml单元测试配置文件
在yaf中做单元测试,主要是测试library下面的库,包括Dao、Model、Service层的测试。
controller层一般通过API功能测试,这个不依赖yaf,所以这里重点讲解服务层的测试。
1bootstrap.php文件
如下,我们通过这样的类似入口文件的代码,初始化yaf框架,实现对服务层的调用。
<?php
ini_set('error_reporting',E_ALL);//orerror_reporting(E_ALL);
ini_set('display_errors','1');
ini_set('display_startup_errors','1');
define("BASE_PATH",__DIR__."/../");
define("APP_PATH",BASE_PATH."application/");
define("ENV",get_cfg_var('SERVER_ENV'));
includeBASE_PATH.'vendor/autoload.php';
/**
*ClassTestBase
*说明:这里我们用了autoload.php,所以YAF的php.ini需设置:yaf.use_spl_autoload=1,
*否则会报错:Warning:Yaf_Loader::autoload():Failedopeningscript...Nosuchfileordirectory
*/
static$application=null;
//必须实例化Yaf_ApplicationFinal类;
//载入Application必备的配置文件;
//Yaf_Application代表的是一个产品/项目,必须保证单例。
$application=Yaf_Registry::get('Application');
if(!$application){
$application=newYaf_Application(BASE_PATH."configs/application.ini",ENV);
$application->bootstrap();
Yaf_Registry::set('Application',$application);
}
2phpunit.xml文件
在phpunit.xml中,我们指定启动文件,配置测试目录和文件后缀:
<?xmlversion="1.0"encoding="UTF-8"?> <phpunitstderr="true"bootstrap="tests/bootstrap.php"backupGlobals="false"> <testsuites> <testsuitename="APITestSuite"> <directorysuffix=".php">./tests/api/</directory> </testsuite> </testsuites> </phpunit>
这样我们在tests/下的测试用例都可以直接调用yaf的组件,以及所有的library下的类了。
3开始测试
./vendor/phpunit/phpunit/phpunit