Skip to content

Commit 3e3f18f

Browse files
committed
docs: phpunit.xml
1 parent 4ed68c6 commit 3e3f18f

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

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

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
## 25. 2019-06-17-Laravel 单元测试 phpunit.xml 目录结构及测试编排文件说明
22

33
### 目录结构
4-
Laravel 框架基于 PHPUnit 提供了开箱即用的测试功能,对代码测试的支持非常有好:
4+
`Laravel` 框架基于 `PHPUnit` 提供了开箱即用的测试功能,对代码测试的支持非常有好:
55

66
Laravel PHPUnit 测试
77

8-
以 Laravel 5.8 为例,在框架初始化过程中通过 Composer 安装了 PHPUnit 7(也可以手动升级到 PHPUnit 8),并且在项目根目下创建了 tests 目录用于存放测试文件:
8+
`Laravel 5.8` 为例,在框架初始化过程中通过 `Composer` 安装了 `PHPUnit` 7(也可以手动升级到 PHPUnit 8),并且在项目根目下创建了 tests 目录用于存放测试文件:
99

10-
Laravel测试目录结构
10+
Laravel 测试目录结构
1111

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

@@ -16,6 +16,7 @@ Laravel测试目录结构
1616
### 通过 phpunit.xml 编排 PHPUnit
1717
在上一篇 PHPUnit 入门教程中,我们已经介绍过,可以通过 XML 配置文件来编排 PHPUnit 的测试,对应的 XML 文件位于项目根目录下的 phpunit.xml,Laravel 框架已经为我们做好了如下初始化设置:
1818

19+
```
1920
<?xml version="1.0" encoding="UTF-8"?>
2021
<phpunit backupGlobals="false"
2122
backupStaticAttributes="false"
@@ -49,6 +50,8 @@ Laravel测试目录结构
4950
<server name="SESSION_DRIVER" value="array"/>
5051
</php>
5152
</phpunit>
53+
```
54+
5255
该文件的第一行是 XML 文件的版本和编码描述信息,从第二行开始的 <phpunit> 元素则正式开始配置 PHPUnit 的核心功能,在该元素里面还嵌套定义了其它子元素,用于配置测试套件、过滤器、PHP 变量等其它信息。下面我们逐一来介绍这些元素和属性。
5356

5457
#### 通用配置
@@ -92,6 +95,7 @@ Laravel PHPUnit 代码覆盖率
9295
#### PHP 变量
9396
最后,Laravel 框架还通过 <php> 元素为我们初始化了一些 PHPUnit 测试环境下的 PHP 常量:
9497

98+
```
9599
<php>
96100
<server name="APP_ENV" value="testing"/>
97101
<server name="BCRYPT_ROUNDS" value="4"/>
@@ -100,14 +104,19 @@ Laravel PHPUnit 代码覆盖率
100104
<server name="QUEUE_CONNECTION" value="sync"/>
101105
<server name="SESSION_DRIVER" value="array"/>
102106
</php>
107+
```
108+
103109
上述配置相当于以下 PHP 代码:
104110

111+
```
105112
$_SERVER['APP_ENV'] = 'testing';
106113
$_SERVER['BCRYPT_ROUNDS'] = '4';
107114
$_SERVER['CACHE_DRIVER'] = 'array';
108115
$_SERVER['MAIL_DRIVER'] = 'array';
109116
$_SERVER['QUEUE_CONNECTION'] = 'sync';
110117
$_SERVER['SESSION_DRIVER'] = 'array';
118+
```
119+
111120
通过上述配置我们可以得知,在 Laravel 测试环境下,APP_ENV 的值是 testing,因此,我们可以在根目录下创建一个 .env.testing 文件作为测试环境下的环境配置文件,运行 phpunit 时实际执行的是控制台应用的 Kernel 来启动应用,这样,系统就会通过 .env.testing 读取环境配置。
112121

113122
缓存、邮件、会话驱动都是通过数组模拟,因而不会持久化到硬盘,此外队列驱动是 sync,表示会同步执行推送到队列的任务。

0 commit comments

Comments
 (0)