eme*_*his 6 php continuous-integration unit-testing travis-ci circleci
我在本地运行或测试代码时没有看到任何错误.我的phpunit测试套件通过:
Time: 11.69 seconds, Memory: 43.50Mb
OK, but incomplete, skipped, or risky tests!
Tests: 149, Assertions: 281, Incomplete: 13.
Run Code Online (Sandbox Code Playgroud)
但是当我推送完全相同的代码并且CircleCI运行完全相同的测试命令时,它会因致命错误而失败:
.PHP Fatal error: Class 'App\Domain\API\Request\Soap\Json\AbstractJson' not found in /home/ubuntu/TransitScreen/src/Domain/Api/Request/Soap/Json/NJTransit.php on line 10 php ./vendor/bin/phpunit --no-coverage --testsuite=unit returned exit code 255
Run Code Online (Sandbox Code Playgroud)
这是我的circle.yml:
test:
override:
- php ./vendor/bin/phpunit --no-coverage --testsuite=unit
machine:
php:
version: 5.6.5
environment:
APP_ENV: circleci
Run Code Online (Sandbox Code Playgroud)
它引用的文件以:
<?php
namespace App\Domain\API\Request\Soap\Json;
use App\Domain\Api\Request\InputApiDataRequest;
use App\Domain\Api\Request\Soap\AsyncSoapClient;
use Assert\Assertion;
class NJTransit extends AbstractJson
{
Run Code Online (Sandbox Code Playgroud)
起初我以为也许CircleCi运行的是没有命名空间的旧版PHP,但即使我将其设置为使用PHP v5.6.5,也会发生同样的错误.我甚至尝试将数据库转储添加到测试序列中.
对我来说,它甚至可以在错误发生之前运行几十个测试.所以我很确定它不是CircleCI上严重错误配置的东西.
有关为什么相同代码在两种环境中表现如此不同的任何建议?
更新1:我发现这个问题听起来非常相似但到目前为止覆盖了composer命令还没有解决问题. Laravel - CircleCI - 在phpunit上失败
更新2:我发现这个问题谈论自动循环不起作用......它提出了一个新理论......也许存在一个涉及OSX(我的本地环境)和Ubuntu(CircleCI)之间区分大小写差异的问题.这是我的composer.json文件的相关部分:
"autoload": {
"psr-4": {
"App\\": "src"
}
},
"autoload-dev": {
"psr-4": {
"App\\Test\\": "tests",
"Cake\\Test\\": "./vendor/cakephp/cakephp/tests",
"TestApp\\": "tests/TestApp/src",
"TestApp\\Test\\": "tests/TestApp/tests"
}
},
Run Code Online (Sandbox Code Playgroud)
即使使用您给出的代码示例,我也花了一段时间才发现它,但看起来命名空间的一部分是错误的大小写(APIvs Api)?
与普遍的看法相反,OS X 机器默认格式化为不区分大小写,不幸的是,这使得它们在这方面更像 Windows 机器。
| 归档时间: |
|
| 查看次数: |
636 次 |
| 最近记录: |