/ test

test

写测试是一个初级程序员和中级程序员的分界线。

测试驱动开发(TDD)

测试驱动开发就是在开发的时候测试应用方方面面的性能。具体是指开发前书写测试用例,开发时通过测试,或者类库构建完成后再进行测试。测试对应用是非常重要的,不测试就启动一个应用相当于不带降落伞从 30 楼跳下。

PHP 下的测试

PHP 原生虽然未能提供测试的内建特性,但是其他测试框架依然可以用来实现这个功能。应用最广泛的类库之一就是 PHPUnit,它是一个非常强大的工具,提供了许多功能。

https://phpunit.de/

Yii2 下的测试

CodeCeption是一个全栈的PHP测试框架,所有资料参考 Yii2 的 codeception official document

Install via Composer

composer global require "codeception/codeception" --dev

然后就拥有了命令 codecept

Once you created a project from a basic template you should see folder tests and codeception.yml configuration file.

basic
|--tests
|--codeception.yml

由于Yii2框架已经整合了Codeception,所以不需要运行"codecept bootstrap"命令来生成配置文件 codeception.yml 和目录 tests。我们需要确保当前程序可以正常运行,然后修改配置文件,设置好测试数据库的参数,然后运行测试命令:

./vendor/bin/codecept run

这样就会执行 Yii2 自带的简单测试,如果一切正常,那么所有测试都应该是通过的。

如果需要运行 acceptance tests(验收测试),还需要一个无头浏览器:

# for Firefox
java -jar -Dwebdriver.gecko.driver=/usr/bin/geckodriver ~/selenium-server-standalone-3.4.0.jar

https://github.com/yiisoft/yii2-app-basic/blob/master/README.md#testing

JavaScript 下的测试

一般使用以下测试套件:

  • qunit,一个 JavaScript 单元测试框架。
  • mocha,是一个可以既能跑在 Node.js 又能跑在浏览器里的测试框架。

测试套件的组成:

  • 断言,使用断言执行一个测试;
  • 测试组,使用一个测试组包含多个断言;
  • 异步测试,测试的结果在一段不确定的时间后会返回;