Я установил Gitlab CI Pipeline для проекта Laravel 5.5 (файлы в нижней части поста), и сборка прошла успешно, но тесты не пройдены, потому что PHPUnit завершается с сообщением об ошибке
Неустранимая ошибка: класс ‘Tests \ TestCase’ не найден в /builds/[User]/[Repo]/tests/Feature/DocumentTest.php в строке 8
(Очевидно, что [Пользователь] и [Репо] не являются реальными ценностями, просто не хочу обнародовать их здесь)
Я уже пробовал разные вещи, такие как глобальная установка PHPUnit, вызов PHPUnit по-разному, все заканчивается одним и тем же сообщением об ошибке.
PHPUnit успешно работает на моем локальном компьютере (независимо от того, как я его называю, он всегда работает). Так кто-нибудь знает, в чем здесь проблема?
Для справки вот файлы конвейера:
.gitlab-ci.yml:
image: woohuiren/php-laravel-env:latest
services:
- mysql:latest
- redis:4.0.2-alpine
before_script:
- apk update
- docker-php-ext-install pcntl
variables:
MYSQL_DATABASE: testdb
MYSQL_ROOT_PASSWORD: root
stages:
- build
- test
build_job:
stage: build
script:
- sh .gitlab-build.sh
artifacts:
paths:
- vendor/
- bootstrap/
- composer.phar
- .env
tags:
- docker
test_job:
stage: test
dependencies:
- build_job
script:
- sh .gitlab-ci.sh
tags:
- docker
.gitlab-build.sh:
#!/bin/bash
set -eo pipefail
php -v
ping -c 3 mysql
php composer.phar install --no-progress --no-scripts
php artisan package:discover
cp -v .env.testing .env
php artisan key:generate
php artisan optimize
php artisan config:clear
php artisan storage:link
php artisan migrate --seed
php artisan jwt:secret
php artisan passport:install --force
.gitlab-ci.sh:
#!/bin/sh
set -eo pipefail
php -v
ping -c 3 mysql
./vendor/phpunit/phpunit/phpunit -v --testdox
Что такое Tests\TestCase
? я догадываюсь строка 8 в DocumentTest.php является
public class DocumentTest extends TestCase
…где TestCase
является PHPUnit\Framework\TestCase
, Кажется, что есть проблема с автозагрузкой или файл не импортируется TestCase
, Попробуйте изменить эту строку на:
public class DocumentTest extends PHPUnit_Framework_TestCase
Я могу попытаться дать лучший ответ, если вы включите phpunit.xml а также composer.json.
Других решений пока нет …