PHPackages                             snowair/phpunithelper-thinkphp - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Testing &amp; Quality](/categories/testing)
4. /
5. snowair/phpunithelper-thinkphp

Abandoned → [snowair/think-phpunit](/?search=snowair%2Fthink-phpunit)Library[Testing &amp; Quality](/categories/testing)

snowair/phpunithelper-thinkphp
==============================

ThinkPHP3.2单元测试辅助类

1003833[4 issues](https://github.com/snowair/phpunithelper-thinkphp/issues)PHPCI failing

Since Sep 10Pushed 6y ago13 watchersCompare

[ Source](https://github.com/snowair/phpunithelper-thinkphp)[ Packagist](https://packagist.org/packages/snowair/phpunithelper-thinkphp)[ RSS](/packages/snowair-phpunithelper-thinkphp/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (2)Used By (0)

说明
==

[](#说明)

帮助ThinkPHP3.2项目实施phpunit单元测试.

使用
==

[](#使用)

使用think-phpunit的最重要的前提是你本身懂得什么是单元测试. 如果你还对单元测试一知半解，请先认真学习phpunit.

此外, think-phpunit 是一个composer包, 需要首先安装composer.

记住: 先学会走路, 再学跑步.

[phpunit中文文档](https://phpunit.de/manual/current/zh_cn/index.html)

[composer中文文档](http://www.kancloud.cn/thinkphp/composer)

PHPUnit 及 Composer的使用本文不做介绍.

### 创建composer.json 并安装依赖

[](#创建composerjson-并安装依赖)

```
{
  "name": "公司名/项目名",
  "autoload": {
    "classmap": ["Application","ThinkPHP/Library"]
  },
  "require-dev": {
    "snowair/think-phpunit": "dev-master"
  }
}

```

**关键在于：autoload和require-dev**, 你必须让composer能在测试时找到你的类. 所有需要在autoload中进行注册

首次安装:

```
$ composer install

```

更新:

```
$ composer update

```

当你向项目中增加了新的class以后，需要重建autoload:

```
$ composer dump-autoload

```

安装好以后, 你就可以为项目中任何一个类创建单元测试类了:

### 创建单元测试类

[](#创建单元测试类)

think-phpunit的单元测试类遵循以下规则:

1. 所有的测试类都要在 `setupBeforeClass` 静态方法中创建出模拟app实例.
2. 如果测试的是控制器类，那么测试类要 `use \Think\Phpunit;`. 测试其他类不需要这条

测试文件组织比较自由，只要能保证phpunit能在执行时载入它即可. 我把测试文件放在了项目根目录下的 test 文件夹

对于TP项目而言, 最困难的地方在于控制器类的测试, think-phpunit 将一切简化到一行:

使用控制器测试类的 `execAction($action_name)` 执行控制器action, 它会返回action执行产生的所有输出供你做断言.

下面是一个简单的测试控制器方法输出的示例测试文件,其他类型的类就不做介绍了:

```
