有人可以向我解释使用名为phpunit.xml.dist或的PHPunit配置文件有什么区别phpunit.xml.
在官方文件中提到这两个名字:
PHPUnit的XML配置文件(附录C)也可用于组成测试套件.Example 5.1显示了一个最小的phpunit.xml文件,它将在递归遍历tests目录时添加*Test.php文件中的所有*Test类.
phpunit.xml在没有configuration参数的情况下加载配置时给予更高的优先级.
如果当前工作目录中存在phpunit.xml或phpunit.xml.dist(按此顺序)并且未使用--configuration,则将自动从该文件中读取配置.
我确实发现了一些问题(例如,这个.xml.dist文件确实需要使用)与事实有关,.dist文件通常被用作模板(分发),应该复制到没有.dist结束的版本来激活它们(例如.htaccess.dist).但这似乎不是PHPunit的情况,因为它拾取并运行dist文件.其他问题(我可以使用phpunit.xml获取凭据,使用phpunit.xml.dist进行测试吗?)似乎可以处理有关这两个文件的其他奇怪的使用方法.
在Symfony世界中,可重用捆绑包必须包含一个phpunit.xml.dist文件,我想知道为什么不是phpunit.xml文件.
测试套件不得包含AllTests.php脚本,但必须依赖于phpunit.xml.dist文件的存在.
因此,如果有人可以对此有所了解,我会很高兴;-)
对于在https://www.gitlab.com上托管的项目,我想在CI设置中设置代码覆盖率,因此它可以显示在作业列表中
我的配置如下所示:
.gitlab-ci.yml
image: php:7.1.1
cache:
paths:
- vendor/
before_script:
# Install git, the php image doesn't have installed
- apt-get update -yqq
- apt-get install git -yqq
# Install composer
- curl -sS https://getcomposer.org/installer | php
# Install all project dependencies
- php composer.phar install
# Run our tests
test:
only:
- master
- develop
script:
- vendor/bin/phpunit --configuration phpunit.xml --coverage-text --colors=never
Run Code Online (Sandbox Code Playgroud)
作业成功,但显示错误消息
错误:没有可用的代码覆盖率驱动程序
我已更新测试覆盖率解析的设置并将正则表达式设置为
^\s*Lines:\s*\d+.\d+\%
Run Code Online (Sandbox Code Playgroud)
PHP/PHPUnit的示例.
当我运行命令
vendor/bin/phpunit --coverage-text --colors=never
Run Code Online (Sandbox Code Playgroud)
在本地,我得到以下输出:
Code Coverage Report: …Run Code Online (Sandbox Code Playgroud) 尝试在 Symfony 3.3 中使用序列化器组件。我与具有“DateTime”成员的实体斗争。
我的 config.yml 序列化程序初始化:
serializer:
enable_annotations: true
Run Code Online (Sandbox Code Playgroud)
在 service.yml 中添加了这个:
datetime_method_normalizer:
class: Symfony\Component\Serializer\Normalizer\DateTimeNormalizer
public: false
tags: [serializer.normalizer]
Run Code Online (Sandbox Code Playgroud)
反序列化后的代码如下所示:
$yml = [...] // It was created by serializer->serialize()
$serializer = $this->get('serializer');
$myObject = $serializer->deserialize($yml, MyObject::class, "yaml");
Run Code Online (Sandbox Code Playgroud)
错误是: Expected argument of type "DateTime", "string" given在 vendor/symfony/symfony/src/Symfony/Component/Serializer/Normalizer/AbstractObjectNormalizer.php(第 204 行)
我认为 DateTimeNormalizer::denormalize 永远不会被调用。知道如何让它恢复生机吗?
信息:DateTimeNormalizer::__constructor() 被调用。