我为Laravel 5.5项目设置了一个Gitlab CI Pipeline(帖子底部的文件),并且构建成功,但测试失败,因为PHPUnit退出并显示错误消息
致命错误:Class' Tests \ TestCase'在第8行的/builds/[User]/[Repo]/tests/Feature/DocumentTest.php中找不到
(显然,[用户]和[回购]不是真正的价值观,只是不想在这里公开)
我已经尝试了不同的东西,比如全局安装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
答案 0 :(得分:0)
什么是Tests\TestCase
?我在 DocumentTest.php 中猜测第8行是
public class DocumentTest extends TestCase
...其中TestCase
是PHPUnit\Framework\TestCase
。似乎存在自动加载问题或文件无法导入TestCase
。尝试将此行更改为:
public class DocumentTest extends PHPUnit_Framework_TestCase
如果您包含 phpunit.xml 和 composer.json ,我可以尝试给出更好的答案。
答案 1 :(得分:0)
我在本地也遇到了同样的错误。确保您的composer.json
有
"psr-4": {
"App\\": "app/",
"Tests\\": "tests/"
},
至少运行一次composer dump-autoload
或使其成为测试过程的一部分。