Gitlab CI -Laravel 5.5 - PHPUnit" Tests \ TestCase not found"

时间:2017-09-29 08:00:44

标签: php laravel phpunit gitlab gitlab-ci

我为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

2 个答案:

答案 0 :(得分:0)

什么是Tests\TestCase?我在 DocumentTest.php 中猜测第8行

public class DocumentTest extends TestCase 

...其中TestCasePHPUnit\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或使其成为测试过程的一部分。