de-swebhosting / typo3-extension-buildtools
包含测试和发布TYPO3扩展的脚本
Requires
- codeception/codeception: ^4.0
- codeception/module-asserts: ^1.1
- codeception/module-webdriver: ^1.0.1
- phpunit/phpunit: ^8.5.21
- squizlabs/php_codesniffer: ^3.1
- typo3/testing-framework: ^6.15.1
Suggests
- de-swebhosting/php-codestyle: Currently required to run t3_check_codestyle.sh
This package is auto-updated.
Last update: 2024-09-10 10:53:59 UTC
README
使用TYPO3核心提供的工具测试您的TYPO3扩展
- 使用
typo3/testing-framework
包 docker
和docker-compose
- 的
typo3gmbh/php*
docker镜像
提示1:目前,每个工具版本仅支持一个TYPO3核心版本。
提示2:目前,Composer依赖必须安装在.Build
目录中。有关所需配置,请参阅doc/composer-sample.json。
安装
编辑composer.json
根据doc/composer-sample.json中的说明调整您的composer.json
文件中的设置。
然后运行composer update
。
动态要求
如果您想测试多个核心版本,您可以在构建过程中动态地要求不同的buildtools版本。
对于TYPO3 10
composer require --dev de-swebhosting/typo3-extension-buildtools:dev-master
对于TYPO3 9
composer require --dev de-swebhosting/typo3-extension-buildtools:dev-TYPO3_9
本地运行
在您可以在本地执行脚本之前,您需要将您的扩展密钥设置为一个环境变量
export TYPO3_EXTENSION_KEY="<my_extension_key>"
然后您可以运行不同的命令。
t3_run_tests.sh
- 用于运行单元、功能和验收测试t3_check_codestyle.sh
- 用于通过PHP_CodeSniffer检查/修复PHP代码风格t3_prepare_release.sh
- 准备文档和ext_emconf.php
以进行发布t3_deploy_to_ter.sh
- 将扩展上传到TER
在travis中运行
请参阅doc/travis-sample.yml文件。您需要
- 将
<your_extension_key>
替换为您的扩展的扩展密钥 - 删除
[your_custom_codestyle]
或替换它为您要用于代码风格检查的规则集名称(请参阅代码风格检查)。
示例Travis CI配置将
- 验证
composer.json
文件 - 检查您的PHP代码的代码风格
- 为PHP 7.3和7.4运行单元测试
- 为PHP 7.3和7.4运行功能测试
- 为PHP 7.3和7.4运行PHP linting
- 为PHP 7.3和7.4运行验收测试
它还将尝试在推送标签时部署您的扩展到TER。您需要将您的TYPO3登录数据设置在Travis环境变量中才能使其正常工作(请参阅部署到TER)。
TYPO3_ORG_USERNAME
TYPO3_ORG_PASSWORD
编写测试
单元测试
要编写单元测试,请在您的扩展中创建Tests/Unit
文件夹,并通过扩展TYPO3\TestingFramework\Core\Unit\UnitTestCase
添加第一个测试用例。
namespace Vendor\MyExt\Tests\Unit; use TYPO3\TestingFramework\Core\Unit\UnitTestCase; class MyFirstUnitTest extends UnitTestCase { ... }
功能测试
要编写功能测试,请在您的扩展中创建Tests/Functional
文件夹,并通过扩展TYPO3\TestingFramework\Core\Functional\FunctionalTestCase
添加第一个功能测试用例。
namespace Vendor\MyExt\Tests\Functional; use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase; class MyFirstFunctionalTest extends FunctionalTestCase { ... }
执行测试
要执行单元测试,请运行此命令
.Build/bin/t3_run_tests.sh -s unit -p "<PHP version>"
要执行功能测试,请运行此命令
.Build/bin/t3_run_tests.sh -s functional -d "<database type>" -p "<PHP version>"
<数据库类型>
可以是
mariadb
mssql
postgres
sqlite
验收测试
前端
您可以在 doc/acceptance 文件夹中找到一些验收测试的样板代码。
将 codeception.yml 文件复制到您的扩展的 Tests
文件夹中,并
调整配置的命名空间。
前端子文件夹 frontend 包含创建前端测试套件的骨架。
将此目录中的所有文件和文件夹复制到您的扩展的 Tests/Acceptance
文件夹中,并调整
所有文件中的命名空间。
之后,您应该能够运行第一个验收测试(位于 Frontend 子目录)。
.Build/bin/t3_run_tests.sh -s acceptance -a Frontend
后端
后端验收测试的设置与前端相当相似。
将 backend 文件夹的内容复制到您的扩展的 Tests/Acceptance
文件夹中,然后就可以开始了。
默认情况下,验收测试命令会执行后端测试套件。
.Build/bin/t3_run_tests.sh -s acceptance
调试
将这些内容添加到 docker-compose.yml
文件中 web
服务的配置中,以暂时启用开发环境以获得更好的调试输出,并从您的本地机器访问 web 服务器
重要!为了使此功能正常工作,您需要将 --service-ports
参数添加到 t3_run_tests.sh
中的 docker-compose
命令
。最终的命令看起来像这样
docker-compose run --service-ports acceptance_backend_mariadb10
此配置需要添加到 docker-compose.yml
文件
web: ... ports: - "8000:8000" ... environment: TYPO3_CONTEXT: Development
代码风格检查
要执行代码风格检查,可以使用此命令
.Build/bin/t3_check_codestyle.sh
它检查 TYPO3 扩展中所有已知的 PHP 文件位置,基于 TYPO3 核心编码指南的默认配置。
您可以通过将 Tests/CodeSniffer/MyCodingStandard/ruleset.xml
添加到您的扩展中来调整规则集。
以下是一个使用默认规则并禁用 TCA 配置文件行长度检查的示例
<?xml version="1.0"?> <ruleset name="MyCodingStandard"> <description>Based on PSRDefault. Adjust only if REALLY neccessary!</description> <rule ref="PSRDefault"/> <rule ref="Generic.Files.LineLength"> <exclude-pattern>Configuration/TCA/*</exclude-pattern> </rule> </ruleset>
在创建了规则集之后,您必须向代码风格检查器提供其名称
.Build/bin/t3_check_codestyle.sh MyCodingStandard
要自动修复代码风格错误,可以将 fix
关键字作为第一个参数传递
.Build/bin/t3_check_codestyle.sh fix [MyCodingStandard]
部署到 TER
使用 t3_prepare_release.sh
脚本来准备一个发布版本
bash .Build/bin/t3_prepare_release.sh "<semantic_version>"
这将在 ext_emconf.php
和 Documentation/Settings.cfg
中设置提供的版本号,并使用 git flow release
命令创建一个新的发布版本。
之后,您可以推送所有分支和标签。推送的标签将被发布到 TER。
git push && git push --tags && git checkout develop && git push
鸣谢
这项工作基于 TYPO3 测试框架和 https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/Testing/ExtensionTesting.html 上的出色文档。