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