单元测试 - 创建和运行命令

  • 作者:KK

  • 发表日期:2015.12.13


为什么现在才讲这个呢?其实我写教程的风格是这样的:就像前面几章的内容一样,我是先引导大家一步步手把手跟着做把程序跑起来用起来看看效果再说,什么概念呀规范呀的慢慢后面再讲,不像书面教程那样开门见山就说安装,说明,创建命令大全,运行命令大全,方法大全什么的每一环节都讲N多...我都会讲那些环节但只是把实际上我们用的讲出来,先把它用起来再说,后面有必要再开专门章节详解,等大家都基本了解这个东西了,要深度专门学习时你们自己去找官方文档看这一环节的详解看看有什么你们不知道的少用的知识


创建测试用例

之前引导大家入门那里使用过E:\codecept.phar generate:test unit HelloWorld这样的命令来生成一个叫HelloWorld的测试用例,并且它生成的测试用例文件名里会自动带上Test这个词E:\codecept.phar这里我就省略一下了,后面参数generate:test unit 测试用例名称就是用来创建单元测试的,只要修改测试用例的名称即可

运行后它将会在测试项目的tests/unit目录下产生一个叫测试用例名称Test.php这样的文件


将测试用例归类

测试用例会随着项目类库的增多而越写越多,一大坨代码写在一个测试用例的文件里你肯定不想啦,于是你肯定会想着分开多几个文件来写,但是文件多了咋办呀?哈哈这里其实还可以创建目录的,不难,就是创建测试用例时在用例名称前面加多个分类目录/这样,比如分类目录/测试用例名称,我们试试php E:\codecept.phar generate:test unit game/Abc,于是它就会先在unit目录下创建game目录再在里面创建Abc测试用例了,而且这里还能三层,比如game/role/Abc,其它你自己探索一下吧!


运行指定测试用例

最简单的运行命令就是之前我们用到臭了的php E:\codecept.phar run unit HelloWorldTest

它很简单就是说运行unit目录下HelloWorld这个测试用例,不用加上.php这样的文件后缀

其实你可以一次性运行所有测试用例:php E:\codecept.phar run unit,就是这样不指定用例名称就好了

如果你有对测试用例做分类,也是在前面加个目录名就行,比如php E:\codecept.phar run unit game/AbcTest

另外其实经常还要运行全部单元测试用例的,上面的命令都指定了测试用例的名称.于是其实大家都可以想到,不写名称应该就是运行全部单元测试了,php E:\codecept.phar run unit,因为你修改了一个东西后,希望全部都测试一下,确定全部类都不被影响之类的吧,毕竟它们会互相调用


运行某用例的某测试方法

php E:\codecept.phar run unit HelloWorldTest:testXyz

就是在用例后面加:测试方法名称即可,其中一定要注意这里只有一个:号,我自己也偶尔会习惯性地打两个:号导致它不识别,结果运行了整个用例的所有方法

因为有时候我们在开发测试用例,写一点调试一点,就会只需要运行这个方法

又或者以后出了些什么问题时我们只需要确认这个测试方法有没有错,其它不需要确认

但如果指定了这个方法,这个方法的@depends(依赖声明)就会被忽略不会运行