我在本地运行或测试代码时没有看到任何错误。我的phpunit
测试套件通过了:
Time: 11.69 seconds, Memory: 43.50Mb
OK, but incomplete, skipped, or risky tests!
Tests: 149, Assertions: 281, Incomplete: 13.
但是当我推送完全相同的代码并且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
这是我的circle.yml:
test:
override:
- php ./vendor/bin/phpunit --no-coverage --testsuite=unit
machine:
php:
version: 5.6.5
environment:
APP_ENV: circleci
它引用的文件以:
开头<?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
{
起初我认为CircleCi可能正在运行旧版本的PHP而没有名称空间或其他东西,但即使我将其设置为使用PHP v5.6.5时也会发生同样的错误。我甚至尝试在测试序列中添加数据库转储。
对我来说,在发生错误之前能够运行几十个测试对我来说更奇怪。因此,我非常确定它不会在CircleCI上出现严重错误配置。
关于为什么相同的代码在两种环境中表现如此不同的任何建议?
更新1:我发现这个问题听起来非常相似,但到目前为止,覆盖了作曲家命令还没有解决问题。 Laravel - CircleCI - Fails on phpunit
更新2:我发现this question谈论自动删除无法正常工作...它提出了一个新理论......也许存在涉及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"
}
},
答案 0 :(得分:2)
即使使用您提供的代码示例,我也要花些时间来发现它,但看起来命名空间的一部分是错误的情况(API
vs Api
)?
与流行的看法相反,OS X机器默认情况下不区分大小写,不幸的是它们在这方面更像是Windows机器。