wordpress test

代码必须经过严格的测试才能够「放心」。我们通过 wordpress 的test来了解一下,如何测试一个 web server.

git clone git://develop.git.wordpress.org/

wordpress 的测试包括但不限于beta testing, user testing, automated testing, 自动化测试

自动化测试

自动化测试不需要手工接入,一般通过命令行运行测试集。

wordpress 使用qtest 来测试 javascript。使用 phpunit 测试 php代码。

自动化测试是一段验证 WP 函数的代码。test case 尽可能的小和独立。理想情况下,自动化测试case应该是单元测试,在没有外界依赖的隔离环境中可以验证。实际上,WordPress的架构和测试集,让写pure单测变得不可能。因此,这里的单测紧紧指自动化测试。

测试的架构

任何测试最重要的部分就是断言(预期和结果)。许多测试都需要数据存储的支持。 WP 通常把数据存储在 DB 中。每一个独立的测试都从空的 wp 安装开始,因此每个测试都要为测试创造它自己的数据。这些数据被称为fixtures(通过 工厂函数产生)

来感受一下:

<?php

class WP_UnitTest_Factory {
	public $post;
	public $attachment;
	public $comment;
	public $user;

	function __construct() {
		$this->post       = new WP_UnitTest_Factory_For_Post( $this );
		$this->attachment = new WP_UnitTest_Factory_For_Attachment( $this );
		$this->user       = new WP_UnitTest_Factory_For_User( $this );
	}
}

当一个 testcase 测试同一函数不通面时,组织 test function 到一个类。它能 share 同一个 setup。每一个 class 有一个 class file,

每个用例测试完毕后,都要将数据清理干净

看一下例子: