Skip to content

Commit d73933a

Browse files
committed
docs: phpunit.xml
1 parent 9057ba8 commit d73933a

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

laravel/readme/25. 2019-06-17-Laravel 单元测试 phpunit.xml 目录结构及测试编排文件说明.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@
33
### 目录结构
44
`Laravel` 框架基于 `PHPUnit` 提供了开箱即用的测试功能,对代码测试的支持非常有好:
55

6-
Laravel PHPUnit 测试
6+
`Laravel PHPUnit` 测试
77

8-
`Laravel 5.8` 为例,在框架初始化过程中通过 `Composer` 安装了 `PHPUnit` 7(也可以手动升级到 PHPUnit 8),并且在项目根目下创建了 tests 目录用于存放测试文件:
8+
`Laravel 5.8` 为例,在框架初始化过程中通过 `Composer` 安装了 `PHPUnit 7`(也可以手动升级到 `PHPUnit 8`),并且在项目根目下创建了 `tests` 目录用于存放测试文件:
99
![](https://laravelacademy.org/wp-content/uploads/2019/04/4527f09add5ed4a4007f97be975bf67d.jpg)
1010

1111

1212
Laravel 测试目录结构
1313

14-
在该目录中包含的 Unit 和 Feature 子目录下存放的测试用例分别用于单元测试和功能测试,二者都是基于 PHPUnit 实现,对应的测试用例的根类都是 PHPUnit\Framework\TestCase。而 Broswer 目录下存放的则是基于 Laravel Dusk(底层基于 Selenium)实现的浏览器测试文件(后面我们再介绍)。
14+
在该目录中包含的 Unit 和 Feature 子目录下存放的测试用例分别用于单元测试和功能测试,二者都是基于 PHPUnit 实现,对应的测试用例的根类都是 `PHPUnit\Framework\TestCase`。而 Broswer 目录下存放的则是基于 Laravel Dusk(底层基于 Selenium)实现的浏览器测试文件(后面我们再介绍)。
1515

16-
此外,在 Laravel 项目根目录下还有一个与 PHPUnit 息息县关的 phpunit.xml 文件,该文件我们在上篇教程中简单介绍过,是 PHPUnit 的编排文件,用于编排和初始化 PHPUnit 的测试行为,PHPUnit 在执行测试之前会基于这个文件进行初始化设置,你可以将其看作是 PHPUnit 的配置文件,下面我们就从这个文件为入口,分析 Laravel 框架如何集成 PHPUnit 进行单元测试和功能测试。
16+
此外,在 Laravel 项目根目录下还有一个与 PHPUnit 息息相关的 phpunit.xml 文件,该文件我们在上篇教程中简单介绍过,是 PHPUnit 的编排文件,用于编排和初始化 PHPUnit 的测试行为,PHPUnit 在执行测试之前会基于这个文件进行初始化设置,你可以将其看作是 PHPUnit 的配置文件,下面我们就从这个文件为入口,分析 Laravel 框架如何集成 PHPUnit 进行单元测试和功能测试。
1717

1818
### 通过 phpunit.xml 编排 PHPUnit
1919
在上一篇 PHPUnit 入门教程中,我们已经介绍过,可以通过 XML 配置文件来编排 PHPUnit 的测试,对应的 XML 文件位于项目根目录下的 phpunit.xml,Laravel 框架已经为我们做好了如下初始化设置:
@@ -67,7 +67,7 @@ processIsolation 属性对应命令行参数里的 --process-isolation,用于
6767
stopOnFailure 属性对应命令行参数里的 --stop-on-failure,用于表示测试出错或失败时是否退出脚本执行,配置为 false 表示不退出。
6868
接下来是一些不能通过命令行参数指定的属性:
6969

70-
convertErrorsToExceptions 属性用于定义是否将 PHP ERROR 级别错误转化为异常,默认会转化为异常的错误类型包括:E_WARNING、E_NOTICE、E_USER_ERROR、E_USER_WARNING、E_USER_NOTICE、E_STRICT、E_RECOVERABLE_ERROR、E_DEPRECATED、E_USER_DEPRECATED,这里将该属性设置为 true 表示启用该功能。
70+
`convertErrorsToExceptions` 属性用于定义是否将 PHP ERROR 级别错误转化为异常,默认会转化为异常的错误类型包括:`E_WARNING、E_NOTICE`、E_USER_ERROR、E_USER_WARNING、E_USER_NOTICE、E_STRICT、E_RECOVERABLE_ERROR、E_DEPRECATED、E_USER_DEPRECATED,这里将该属性设置为 true 表示启用该功能。
7171
convertNoticesToExceptions 属性用于定义是否将 PHP NOTICE 级别错误转化为异常,设置为 true 表示会将 E_NOTICE、E_USER_NOTICE、E_STRICT 三种级别错误转化为异常。
7272
convertWarningsToExceptions 属性用于定义是否将 PHP WARNING 级别错误转化为异常,设置为 true 表示会将 E_WARNING 或 E_USER_WARNING 级别错误转化为异常。
7373
当然,这里只包含了 PHPUnit 所支持的 phpunit 配置的一部分属性,更多配置请参考官方文档 及 PHPUnit 命令行参数配置。
@@ -81,7 +81,7 @@ Laravel 框架默认通过 <testsuites> 定义了两个 <testsuite>,分别是
8181

8282
![](https://laravelacademy.org/wp-content/uploads/2019/04/a1c39cb20b0dc9db1ce781110f1ac7e5.jpg)
8383

84-
更多测试套件的配置选项可以参考官方文档
84+
更多测试套件的配置选项可以参考[官方文档](https://phpunit.readthedocs.io/zh_CN/latest/configuration.html#appendixes-configuration-testsuites)
8585

8686
#### 过滤器
8787
另外,Laravel 框架还通过 <filter> 元素配置了过滤器,在该元素中我们可以通过 whitelist 子元素指定用于配置代码覆盖率报告分析所使用的白名单,代码覆盖率是代码测试中一个很重要的概念,我们的测试代码要尽可能覆盖到 100% 的业务代码,这样的测试才有意义,而 Laravel 应用代码都位于项目根目录下的 app 目录中,并且我们只测试 PHP 代码,所以在 <whitelist> 中通过 directory 子元素做了相应的配置。

0 commit comments

Comments
 (0)