小编lor*_*dos的帖子

命名PHPunit配置文件phpunit.xml.dist或phpunit.xml有什么不同

有人可以向我解释使用名为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文件的存在.

因此,如果有人可以对此有所了解,我会很高兴;-)

php xml phpunit unit-testing symfony

15
推荐指数
1
解决办法
2478
查看次数

如何在gitlab.com上的PHP项目的作业列表中启用代码覆盖率输出

对于在https://www.gitlab.com上托管的项目,我想在CI设置中设置代码覆盖率,因此它可以显示在作业列表中

gitlab.com项目中的工作列表

我的配置如下所示:

.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)

php phpunit code-coverage gitlab gitlab-ci

6
推荐指数
1
解决办法
2448
查看次数

在 Symfony 中反序列化日期时间

尝试在 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() 被调用。

symfony deserialization symfony-3.3

5
推荐指数
1
解决办法
6742
查看次数