当前位置: 代码迷 >> 综合 >> laravel 的 phpunit.xml 文件说明
  详细解决方案

laravel 的 phpunit.xml 文件说明

热度:86   发布时间:2024-01-31 23:36:10.0

通用配置

 

首先来看 phpunit 元素上的属性,其中很多属性其实都可以在执行 phpunit 命令时通过命令行参数的形式传入,但是如果参数太多,且每次传入参数都是一样的,显然配置到 phpunit.xml 中更方便,也更加易于维护,PHPUnit 执行的命令行参数可以在这里查看,或者通过 phpunit --help 在命令行查看:

  • backupGlobals 属性对应命令行参数里的 --globals-backup,用于在每个测试中备份和恢复 PHP 超全局变量 $GLOBALS,这里设置为 false 表示不做相应的备份和恢复操作。
  • backupStaticAttributes 属性对应命令行参数里的 static-backup,用于在每个测试中备份和恢复静态属性,这里设置为 false 表示不做相应的备份和恢复操作。
  • bootstrap 属性对应命令行参数里面的 --bootstrap <file>,用于指定测试运行前需要引入的文件,这里配置为 vendor/autoload.php 表示会引入 Composer 自动加载和管理的所有依赖,以便在测试文件中使用。
  • colors 属性对应命令行参数里的 --colors=<flag>,用于指示在输出中是否用颜色进行标识。
  • processIsolation 属性对应命令行参数里的 --process-isolation,用于表示是否在隔离的 PHP 进程中执行测试。
  • stopOnFailure 属性对应命令行参数里的 --stop-on-failure,用于表示测试出错或失败时是否退出脚本执行,配置为 false 表示不退出。

接下来是一些不能通过命令行参数指定的属性:

  • convertErrorsToExceptions 属性用于定义是否将 PHP ERROR 级别错误转化为异常,默认会转化为异常的错误类型包括:E_WARNINGE_NOTICEE_USER_ERRORE_USER_WARNINGE_USER_NOTICEE_STRICTE_RECOVERABLE_ERRORE_DEPRECATEDE_USER_DEPRECATED,这里将该属性设置为 true 表示启用该功能。
  • convertNoticesToExceptions 属性用于定义是否将 PHP NOTICE 级别错误转化为异常,设置为 true 表示会将 E_NOTICEE_USER_NOTICEE_STRICT 三种级别错误转化为异常。
  • convertWarningsToExceptions 属性用于定义是否将 PHP WARNING 级别错误转化为异常,设置为 true 表示会将 E_WARNING 或 E_USER_WARNING 级别错误转化为异常。

当然,这里只包含了 PHPUnit 所支持的 phpunit 配置的一部分属性,更多配置请参考官方文档 及 PHPUnit 命令行参数配置。

 


 

测试套件

定义在子元素 <testsuites> 中 Laravel 框架这样通过 <testsuites> 配置多个 <testsuite>,这取决于项目的复杂度或者需求。

Laravel 框架默认通过 <testsuites> 定义了两个 <testsuite>,分别是用于单元测试的 Unit 和用于功能的测试的 Feature,在它们各自的测试套件中,通过 directory 子元素指定对应测试文件所在的目录,

并通过 suffix 属性指定测试文件的文件名后缀,这样,当运行 phpunit 命令时,PHPUnit 会从指定目录下匹配指定后缀的测试文件进行测试。

 

 whitelist 

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