单元测试 - 运行机制

  • 作者:KK

  • 发表日期:2015.12.13


哪些测试代码才被运行

就像HelloWorld这个测试用例里的testMe方法一样,如果你再复制一份这个方法改名为testXXX,也会被运行,下面是运行规则说明:

测试框架只会运行所有publictest开头的方法,只要你的方法名称前面有test四个字母就会被运行

当然你还可以在这些公共方法里调用私有方法


预启动脚本

可以看到测试项目目录tests\unit下有一个叫_bootstrap.php的文件,每次运行单元测试代码之前都会运行这个文件的,我们可以在这里做一些初始化工作,比如本来你在测试用例里编写$this->assertTrue(APP_NAME == 'test')然后运行时就会告诉你APP_NAME这个常量不存在,接着在_bootstrap.php里补充代码define('APP_NAME', 'test')然后测试用例就能正常调用这个常量了

但还要告诉你的就是在上一层目录tests也有一个_bootstrap.php,这个才是最先被运行的,然后再运行unit目录里面的,简单地说就是所有测试共同的预启动文件,接着里面就是单元测试才会跑的预启动文件,又比如tests\acceptance\_bootstrap.php这是验收测试运行时才会跑的预启动文件,但它也会运行上一层的公共预启动文件,这个后面学其它测试的时候再专门说吧


运行前后

每运行一个名字为test开头的测试方法,都会运行一次_before方法而测试方法跑完后就会运行_after方法,如果有N个testXXX的方法,那么每个testXXX之前都会跑一次_before_after,这里简单讲一下而已,后面会有详解,因为这里有坑