phpunit.xml配置说明
目录
PHPUnit 的 XML 配置文件在不同版本之间存在一些差异,尽管许多基本配置选项在多个版本中保持一致。随着 PHPUnit 版本的更新,一些配置选项可能会被引入、弃用或修改。因此,虽然某些配置是通用的,但某些特定的配置选项可能仅适用于特定版本的 PHPUnit。
PHPUnit 5.x 的 XML 配置
以下是一个适用于 PHPUnit 5.x 的 XML 配置文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/5.0/phpunit.xsd"
backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
stopOnRisky="false"
verbose="false">
<testsuites>
<testsuite name="My Test Suite">
<directory suffix="Test.php">tests</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory suffix=".php">src</directory>
<exclude>
<directory suffix=".php">src/Generated</directory>
</exclude>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="coverage/report" lowUpperBound="35" highLowerBound="70"/>
<log type="junit" target="logs/junit.xml"/>
</logging>
<php>
<ini name="display_errors" value="1"/>
<const name="MY_CONSTANT" value="my_value"/>
<env name="MY_ENV_VAR" value="my_env_value"/>
</php>
</phpunit>
PHPUnit 6.x 的 XML 配置
以下是一个适用于 PHPUnit 6.x 的 XML 配置文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.0/phpunit.xsd"
backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnError="false"
stopOnFailure="false"
stopOnIncomplete="false"
stopOnSkipped="false"
stopOnRisky="false"
verbose="false"
cacheResultFile="build/phpunit.cache"
cacheTokens="true"
executionOrder="depends,defects">
<testsuites>
<testsuite name="My Test Suite">
<directory suffix="Test.php">tests</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory suffix=".php">src</directory>
<exclude>
<directory suffix=".php">src/Generated</directory>
</exclude>
</whitelist>
</filter>
<logging>
<log type="coverage-html" target="coverage/report" lowUpperBound="35" highLowerBound="70"/>
<log type="junit" target="logs/junit.xml"/>
</logging>
<php>
<ini name="display_errors" value="1"/>
<const name="MY_CONSTANT" value="my_value"/>
<env name="MY_ENV_VAR" value="my_env_value"/>
</php>
</phpunit>
配置说明
<phpunit>
元素的属性:backupGlobals
:是否在每个测试前备份全局变量,默认为false
。backupStaticAttributes
:是否在每个测试前备份静态属性,默认为false
。bootstrap
:指定在运行测试之前加载的引导脚本,通常用于注册自动加载器。colors
:是否在输出中使用颜色,默认为false
。convertErrorsToExceptions
、convertNoticesToExceptions
、convertWarningsToExceptions
:是否将错误、通知、警告转换为异常,默认为true
。processIsolation
:是否为每个测试运行一个单独的 PHP 进程,默认为false
。stopOnError
、stopOnFailure
、stopOnIncomplete
、stopOnSkipped
、stopOnRisky
:是否在遇到错误、失败、不完整、跳过、风险测试时停止执行,默认为false
。verbose
:是否启用详细模式,默认为false
。
<testsuites>
元素:定义测试套件,指定测试文件所在的目录。<testsuite>
:测试套件的名称。<directory>
:测试文件所在的目录,suffix
属性指定文件后缀。
<filter>
元素:配置代码覆盖率分析的过滤器。<whitelist>
:定义要包含在代码覆盖率分析中的文件。<directory>
:指定目录,suffix
属性指定文件后缀。<exclude>
:排除某些文件或目录。
<logging>
元素:配置日志记录。<log>
:定义日志的类型和目标文件。type="coverage-html"
:生成 HTML 格式的代码覆盖率报告。如果暂时不需要生成可以屏蔽。type="junit"
:生成 JUnit XML 格式的测试结果日志。
<php>
元素:配置 PHP 设置、常量、全局变量等。<ini>
:设置 PHP 配置项。<const>
:设置全局常量。<env>
:设置环境变量。
以上配置可以根据实际需求进行调整和扩展,以满足不同项目的测试需求。
通用配置选项
以下是一些在多个版本中通用的配置选项:
-
<phpunit>
元素的属性:backupGlobals
、backupStaticAttributes
、bootstrap
、colors
等属性在多个版本中都存在。xsi:noNamespaceSchemaLocation
属性用于指定 PHPUnit 的 XML Schema,不同版本的 PHPUnit 可能使用不同的 Schema 文件。
-
<testsuites>
元素:- 用于定义测试套件,指定测试文件所在的目录。
<testsuite>
和<directory>
元素在多个版本中都存在。
- 用于定义测试套件,指定测试文件所在的目录。
-
<filter>
元素:- 用于配置代码覆盖率分析的过滤器。
<whitelist>
和<exclude>
元素在多个版本中都存在。
- 用于配置代码覆盖率分析的过滤器。
-
<logging>
元素:- 用于配置日志记录。
<log>
元素在多个版本中都存在,但支持的日志类型可能会有所不同。
- 用于配置日志记录。
-
<php>
元素:- 用于配置 PHP 设置、常量、全局变量等。
<ini>
、<const>
、<env>
等元素在多个版本中都存在。
- 用于配置 PHP 设置、常量、全局变量等。
版本特定的配置选项
以下是一些在特定版本中引入或修改的配置选项:
-
PHPUnit 6.x 及以上版本:
- 引入了
<phpunit>
元素的cacheResultFile
属性,用于指定缓存结果文件的位置。 - 引入了
<phpunit>
元素的cacheTokens
属性,用于启用或禁用代码令牌的缓存。 - 引入了
<phpunit>
元素的executionOrder
属性,用于指定测试的执行顺序。
- 引入了
-
PHPUnit 5.x 版本:
- 支持
<phpunit>
元素的printerClass
和printerFile
属性,用于指定自定义的测试结果打印机。 - 支持
<phpunit>
元素的defaultTestSuite
属性,用于指定默认的测试套件名称。
- 支持
-
PHPUnit 4.x 版本:
- 支持
<phpunit>
元素的testSuiteLoaderClass
和testSuiteLoaderFile
属性,用于指定自定义的测试套件加载器。 - 支持
<phpunit>
元素的testRunnerClass
和testRunnerFile
属性,用于指定自定义的测试运行器。
- 支持
IDE 识别单元测试方法
- 1、命名。测试方法必须以"test"开头才能被 PHPUnit 识别为测试方法。比如
testGetPcPairingLogs
。 - 2、父类。测试类应该继承自 PHPUnit 的 TestCase 类。
- 3、注解。某些 IDE 需要特定的 PHPUnit 注解才能识别测试方法。比如:@test 注解明确标记这是一个测试方法;@covers 注解指明这个测试方法覆盖了哪个具体方法。
- 4、phpunit.xml 配置。如果有启用 testsuites,需要将对应的测试类添加到 testsuites 中,或查看是否在指定的 testsuite 中(可能是目录)。
9ong@TsingChan 文章内容由 AI 辅助生成。