phpcr / phpcr-api-tests
PHP内容存储库合规性测试套件
Requires
- php: ^7.1 || ^8.0
- phpcr/phpcr-implementation: 2.1.*
- phpunit/phpunit: ^7.0 || ^8.0 || ^9.0 || ^10.0
This package is auto-updated.
Last update: 2024-08-31 00:25:34 UTC
README
测试套件,用于测试PHPCR API接口的实现。
测试按功能组织,数字参考JCR v2.0规范,JSR 283的章节号。(可在http://www.day.com/specs/jcr/2.0/index.html找到)
一些章节尚未实现。它们在文件夹中有名为TODO
的文件。所有章节的测试可能不是功能完整的,但正在稳步增加。当然,欢迎提供帮助。
许可证
本代码采用MIT许可证和Apache许可证版本2.0的双重许可。请参阅本文件夹中的LICENSE文件。
用法
phpcr-api-tests 是一个测试套件,用于测试Java内容存储库规范的实现合规性。 https://github.com/phpcr/phpcr
此测试套件与实际实现无关。您需要做一些事情来为您的实现提供适当的引导
- 将API测试作为子模块添加到您的项目中,例如在tests/api文件夹中
- 将phpunit.dist.xml复制到../phpunit.xml,并根据需要调整。
- 实现引导(见下文)
引导
您可以在../bootstrap.php中复制一个样本bootstrap.dist.php并将其调整到您的实现。您的引导必须确保在环境中可用扩展\PHPCR\Test\AbstractLoader的ImplementationLoader
类。ImplementationLoader由\PHPCR\Test\BaseCase用于获取PHPCR实例。
查看inc/AbstractLoader.php文件,了解ImplementationLoader需要做什么。
您可以使用<var...语法将phpunit.xml中的参数传递到您的引导中。
固定装置加载
ImplementationLoader必须提供一个固定装置加载器。固定装置名称是通用的,但所有名称都映射到固定装置文件夹中的.xml文件。这些文件在JCR系统视图格式中。这是与SessionInterface::import一起使用的格式,由SessionInterface::exportSystemView产生
如果您的实现不能导入此格式,您需要将它们转换为合适的格式。
我们不推荐使用您的phpcr实现导入()实现来加载固定装置,而应使用简化版本。如果您使用导入()实现但在此实现中有一些错误或漏洞,您将在不应该失败的测试中遇到令人困惑的错误。
运行测试
一旦此绑定工作正常,请使用phpunit运行测试。如果您使用正常的php安装,这通常是这样的
$ phpunit -c path/to/folder-with/phpunit.xml
您可以通过指定路径来运行规范的具体章节的测试或单个测试案例
$ phpunit -c path/to/folder-with/phpunit.xml path/to/suite/tests/NN_chaptername
依赖项
- PHPUnit在PATH
- PHPUnit在include_path
实现说明
此测试套件旨在与所有PHPCR实现一起使用。在这里永远不要为特定于实现的事物编写测试 - 使用您应用的单元测试或功能测试。
所有测试都必须从PHPCR\Test\BaseCase扩展,该BaseCase提供了具有ImplementationLoader的静态成员$loader来加载数据。BaseCase提供了高效加载数据的基础设施,并有一些额外的断言可供测试使用。有关详细信息,请阅读inc/BaseCase.php中的注释。
为了提高测试运行速度,固定装置在setupBeforeClass方法中加载。如果您需要特定的装置,请将名称传递给父类setupBeforeClass方法,如果您根本不需要装置,请传递false。
对于只读测试,我们有两个装置覆盖所有情况:通用/基本和通用/查询。
为了只加载一次装置但可靠地测试写操作,每个测试用例类都有一个以测试名称命名的装置。BaseCase将在setUp()中将该名称放入$this->node中。这样,每个测试都有自己的“根”节点,不会影响其他测试。
要添加或调整装置,请以PHPCR系统视图格式保持它们。如果您在Jackalope上工作,可以使用jackrabbit和jack.jar工具导入和导出数据:http://github.com/jackalope/jackrabbit-importexport有关详细信息,请参阅jackrabbit-importexport的readme文件。
贡献者
- Christian Stocker [email protected]
- David Buchmann [email protected]
- Tobias Ebnöther [email protected]
- Roland Schilter [email protected]
- Uwe Jäger [email protected]
- Johannes Stark [email protected]
- Lukas Kahwe Smith [email protected]
- Benjamin Eberlei [email protected]
- Daniel Barsotti [email protected]