Category Archives: ninny Project

A project based on Zend Framework 1.0. Plan to improve usage of the Zend Framework. And supply some better practise using Zend Framework.

ninny project 单元测试框架使用说明

系统运行要求

  • PHPUnit 3.1.x

PHPUnit 的安装

参考:http://www.phpunit.de/pocket_guide/3.1/en/installation.html

建议使用 Pear 方式安装。 Pear 包的安装请参考http://pear.php.net/manual/en/installation.php

测试用例的编写

参考:http://www.phpunit.de/pocket_guide/3.1/en/writing-tests-for-phpunit.html

应注意,在本框架使用中实际无需在测试用例加载任何文件。

配置文件的设置

<?xml version=’1.0′ encoding=’UTF-8′ ?>
<AllTests>
<TestSuite>
<name>FoobarTest</name>
<require>AnotherFoobar.php</require>
</TestSuite>
<Test>
<class>Foo_Bar_AllTest</class>
<method>suite</method>
<require>/home/foo/bar/AnotherLib.php</require>
</Test>
</AllTests>

  • TestSuite? 标签指定需要加载的单元测试用例。name 标签指定测试用例名(类名)。
  • Test 为一组单元测试用例。class 标签指定测试用例组类名,method 标签指定该类返回 PHPUnit_Framework_TestSuite 实例的类方法。
  • 类名的命名应遵从 Zend Framework 的命名规则,即下划线分隔文件路径作为类名。如:类文件存放于 Foo/Bar/AllTest.php,则类对应为 class Foo_Bar_AllTest {…}。
  • 测试用例和测试用例组都将自动加载。保存于 include path 下,符合 Zend Framework 类命名规范的类也都将自动加载(使用 Zend_Loader::registerAutoload() 方法)。若还需加载其他文件,应指定 require 标签,require 标签内容为待加载文件的完整路径或相对于测试目录(tests)的相对路径。

 

执行测试

  1. php 的 cli 程序应在系统 PATH 中。
  2. PHPUnit 的执行程序应在系统 PATH 中(Windows 下为 PHPUnit.bat,Linux 下为 PHPUnit.sh)。

All Tests

进入测试框架所在目录,执行 php AllTests?.php。

One Test

进入测试框架所在目录,执行 php OneTest?.php Test_Name。

改进方向

  • 迭代测试用例,子集测试用例可作为独立的测试执行,亦可通过配置文件加载入上级测试执行。
  • 通过配置文件自动生成测试用例框架,编写测试时只需要填写相应测试断言。

ninny Project 的数据库完成向 mysql 5.0 的迁移

升级为 PowerDesigner 12 来维护逻辑表果然方便多了,可以随意生成 Oracle 10g 和 mysql 5.0 的物理表。在修改了配置文件之后,我惊喜的发现原来一行代码也不需要修改,就完成了迁移工作。Zend Framework 的数据库部分的设计果然可圈可点。

由于服务器自身的限制,以 Oracle 作为数据库的版本无法提供演示和下载。所以迫不得已只好再维护一个 mysql 5.0 的数据库版本。PowerDesigner 真的是利器,逻辑表不需要任何修改就可以生成 mysql 版本的物理表。如果大家有类似的迁移需求,推荐大家也用一用这个。等有钱了,一定买一套正版回来用。

修改了资源权值和角色权值为添加时间戳,这样可以省掉维护两个触发器。PowerDesigner 12 好像还不能编写 mysql 5.0 的触发器。或许我需要手工添加一些规则才可以再 PowerDesigner 中直接编写 mysql 的触发器。不过不管怎么样,现在不需要触发器也可以按正常的权值构造 ACL 对象了。

下一步的计划就是构造一个后台管理,将资源、角色、权限、用户等的管理都放到后台中进行。

为提升便利性,为 ninny Project 添加两个脚本工具

工具存放地址:svn://www.i-fang.com/IfangSites/trunk/app/bin

说明:这些工具是为快速开发编写的,请不要尝试在部署的时候使用。因为,多数服务器无法使用 CLI 方式执行 PHP 脚本。而这些工具只能执行于 CLI 模式下。

  1. collectResouces.php —— 资源收集工具

    我一直为 ACL 中资源的管理而烦恼,所以编写了这个工具。对于通用性资源(module、controller、action)进行采集,并按照顺序插入数据库中的资源表。
    使用方法:php collectResouces.php
  2. createModule.php —— 模块、控制器、动作自动创建工具

    其实编写 Controller Action 和 View Script 的第一步工作都是一样的。创建目录,创建文件,添加固定的内容……对于我来说,很烦。所以编写了这个脚本可以通过简单的 Yes/No 方式自动创建必要的目录、文件、代码框架。
    使用方法:php createModule.php

基于 Zend Framework 的整合快速开发结构

在思考现有项目代码重构的过程中的附带产品。主要是基于 Zend Framework 并对其中一些内容进行扩展、整合。放弃部分灵活性,同时提高耦合度为代价,换取开发速度的提升。

我准备将这个项目的代号命名为“ninny”。

项目SVN : svn://www.i-fang.com/IfangSites

项目页面:http://blog.xxiyy.com/?page_id=21

欢迎拍砖。

现有 E-R 图,权限控制部分

E-R 图