今年的这个节还过得不错,甜蜜的月饼,不错的牛排。今天路过HP金牌服务,问了下屏幕的问题,说需要检测就可以跟我换屏了。十一来了把这个事给结了。
本来计划这个月发布新本的,看来又不能发布了。就在前几天,有个突然的想法出现在我脑海里,我这几天一直在琢磨这个,如果不把这个想清楚,我是没心思来继续开发的。而且MediaTemple的Django容器已经开始Beta测试了。希望这个东西能在年底上线。
Changing Anytime
今年的这个节还过得不错,甜蜜的月饼,不错的牛排。今天路过HP金牌服务,问了下屏幕的问题,说需要检测就可以跟我换屏了。十一来了把这个事给结了。
本来计划这个月发布新本的,看来又不能发布了。就在前几天,有个突然的想法出现在我脑海里,我这几天一直在琢磨这个,如果不把这个想清楚,我是没心思来继续开发的。而且MediaTemple的Django容器已经开始Beta测试了。希望这个东西能在年底上线。
这部国产的动画片给我留下了非常深刻的印象,感觉这是一个进步。
今天PHP Development Tools1.0发布了,这是一个基于Eclipse平台的PHPIDE。感觉挺不错了,再学debug。
我最近在强化feed部分,由于Zend Framework中的生成feed的的模块太糟糕,我是说实现,通过传递字典来生成所有的东西。我原来对feed的就是简单的实现,不考虑什么别的。现在我要来完善这个东西。在实现这个东西的时候,到底是使用dom和生成xml,还是直接通过连接字符串来生成xml之间选择。也许xmlwriter也是个不错的选择,于是我通过phpunit中的PHPUnit_Extensions_PerformanceTestCase,作了性能测试,如果直接用字符串连接会快40%。所以,我还是决定用字符串连接算了,dom的用法真是烦琐,不再封装一下,真的会搞死人。等完成了再用字符和xmlwriter做下比较。
今天看了爱情呼叫转移这部电影,真的非常赞,而且陈奕迅的爱情转移也非常好听。这部电影里面讲述的道理非常值的研究。真希望豆瓣做些api,里面的评论非常好。
在google黑板报中的这篇文章中。尽然出现这样的错误,“同时采用开源的 Linux 作新的苹果操作系统的内核”。完全无语了。
这几天我把侧边栏重新写了下,这个实现用于更方便扩展,在下次发布代码的时候会有一个例子来说明怎么写一个侧边栏,而且,在系统内部会内置默认的侧边栏。
如果你已经安装好PHPUnit了,那么就继续开始吧。
<?php
require_once 'PHPUnit/Framework.php';
class ArrayTest extends PHPUnit_Framework_TestCase
{
protected $fixture;
protected function setUp()
{
// Create the Array fixture.
$this->fixture = array();
}
public function testNewArrayIsEmpty()
{
// Assert that the size of the Array fixture is 0.
$this->assertEquals(0, sizeof($this->fixture));
}
public function testArrayContainsAnElement()
{
// Add an element to the Array fixture.
$this->fixture[] = 'Element';
// Assert that the size of the Array fixture is 1.
$this->assertEquals(1, sizeof($this->fixture));
}
}
?>
这是一个测试文件,注意文件名叫ArrayTest.php。在命令行运行phpunit ArrayTest.php,如果显示ok的话,就恭喜你了。setUp()是每次调用测试用例之前调用的方法,用于重置一些变量,方便测试。其实上面的东西照着手册就可以做到了,所以这并不是重点。对于一个项目来说,可能有许多模块,怎么组织这些模块测试就成了一个问题,除非你把所有的东西写在一起,其实那样也挺有难度的。所以在PHPUnit测试里面有帮你组织测试的功能。代码我就不帖了,在这。如果你得懂,就不用再继续看下去了。
在AllTests中定义了两个静态方法,Framework_AllTest也是同样的,区别在于,Framework_AllTest添加了ArrayTest.php这个测试文件。
在AllTests的开始定义了一个常量,并在类的下方对这个常量进行了判断。假如你是从这个文件开始运行的,那个就会定义这个常量,通过常量的判断运行main()这个静态方法,而这个静态方法调用suite()方法,来加载测试套件。这样就能给测试用例很大的灵活性,你可以一起跑所有的测试,也可以只测试某一个用例文件。
相关资料:
PHPUnit手册地址 中文版(有点老了)
我会在将来发布的代码中加入测试
废话就不多说了。也许你知道了单元测试,但又不知道怎么开始,这是个常见的问题,因为我也碰到过,希望下面这个说明会对有帮助,以windows平台为例。
运行PHPUnit需要PHP5的命令行,所以这里需要php的解释器。这里可能有个小麻烦,每个人的环境不一样,像我自己的用的一个集成环境就没有php解释器,所以可以根据自己的需要安装,可以去官方网站下一个最新的。常见的安装方法是通过PEAR Install来安装。一般安装php后可以还没有安装pear,但有一个脚本会自行安装pear。在php5的安装目录下,运行go-pear。这样会有一个向导安装pear,一直回车吧。如果安装成功在php5的安装目录下面会有一个pear.bat文件,这样就可以继续安装PHPUnit了。
pear channel-discover pear.phpunit.de
pear install phpunit/PHPUnit
运行上面命令后,会自动安装PHPUnit,安装完毕后在PHP5的安装目录下会有phpunit.bat这个文件,这样你就有了phpunit的命令行工具,在默认情况下PHP5的安装目录会自动加入到PATH环境变量中。