酒店预订平台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3 年之前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. ## 测试目录结构
  2. 测试文件主要在 tests 文件下面,主要有以下几个文件夹
  3. - conf 测试环境配置文件。
  4. - script 测试环境配置脚本。
  5. - thinkphp 测试用例和相关文件,与项目文件夹结构一致。
  6. - mock.php 测试入口文件。
  7. ## 主要测试流程
  8. thinkphp5 的测试的主要流程是跟 thinkphp 的系统流程是相似的,大体的流程为:
  9. 1. 引用 mock.php 文件加载框架
  10. 2. 根据文件目录,添加测试文件
  11. 3. 执行单元测试,输出结果
  12. ## 测试举例
  13. 例如测试 thinkphp 里的 apc 缓存,将分为以下几个过程:
  14. 1. 创建 apcTest.php 文件
  15. 该文件应与 apc.php 目录路径 `thinkphp/library/think/cache/driver` 一致,命名空间与目录所在一致,并引用 `PHPUnit_Framework_TestCase`。
  16. ```php
  17. <?php
  18. namespace tests\thinkphp\library\think\cache\driver;
  19. class apcTest extends \PHPUnit_Framework_TestCase
  20. {
  21. //设定基境
  22. public function setUp()
  23. {
  24. }
  25. }
  26. ```
  27. 2. 编写测试文件
  28. - 引用 app、config 和 cache
  29. ```php
  30. use think\app;
  31. use think\cache;
  32. use think\config;
  33. ```
  34. - 在 setUp 函数中设定 require 条件
  35. ```php
  36. if(!extension_loaded('apc')){
  37. $this->markTestSkipped('apc扩展不可用!');
  38. };
  39. ```
  40. - 编写测试用例
  41. *具体写法参照 [PHPUnit 官方文档](https://phpunit.de/manual/4.8/zh_cn/index.html)*
  42. ```php
  43. public function testGet()
  44. {
  45. App::run();
  46. $this->assertInstanceOf(
  47. '\think\cache\driver\Apc',
  48. Cache::connect(['type' => 'apc', 'expire' => 1])
  49. );
  50. $this->assertTrue(Cache::set('key', 'value'));
  51. $this->assertEquals('value', Cache::get('key'));
  52. $this->assertTrue(Cache::rm('key'));
  53. $this->assertFalse(Cache::get('key'));
  54. $this->assertTrue(Cache::clear('key'));
  55. Config::reset();
  56. }
  57. ```
  58. 3. 执行单元测试命令
  59. 在项目根目录执行
  60. ```bash
  61. $ phpunit
  62. ```
  63. 若想看到所有结果,请添加-v参数
  64. ```bash
  65. $ phpunit -v
  66. ```
  67. 4. 输出结果
  68. ## 相关文档
  69. [各个部分单元测试说明](http://www.kancloud.cn/brother_simon/tp5_test/96971 "各部分单元测试说明")
  70. ## 大家一起来
  71. 单元测试的内容会跟框架同步,测试内容方方面面,是一个相对复杂的模块,同时也是一个值得重视的部分。希望大家能够多多提出意见,多多参与。如果你有任何问题或想法,可以随时提 issue,我们期待着收到听大家的质疑和讨论。
  72. ## 任务进度
  73. 单元测试任务进度,请大家认领模块
  74. |模块|认领人|进度|
  75. |---|---|---|
  76. |Base|||
  77. |App|Haotong Lin|√|
  78. |Build|刘志淳||
  79. |Config|Haotong Lin|√|
  80. |Cache|||
  81. |Controller|Haotong Lin|√|
  82. |Cookie|Haotong Lin|√|
  83. |Db|||
  84. |Debug|大漠|√|
  85. |Error|大漠||
  86. |Exception|Haotong Lin|√|
  87. |Hook|流年|√|
  88. |Input|Haotong Lin|√|
  89. |Lang|流年|√|
  90. |Loader|流年||
  91. |Log|||
  92. |Model|||
  93. |Response|大漠|√|
  94. |Route|流年||
  95. |Session|大漠|√|
  96. |Template|oldrind||
  97. |Url|流年||
  98. |View|mahuan||