GitLab CI Docker CakePHP 2testing不起作用

我在Docker容器中通过PHPUnittestingCakePHP2应用程序时遇到一些问题。

CakePHP2 testing指南指出,与CakePHP2兼容的最后一个PHPUnit版本是3.7.38。

我正在使用这个版本,但我仍然得到以下错误:

警告错误:include(PHPUnit / Autoload.php):未能打开stream:[/builds/application_folder/lib/Cake/TestSuite/CakeTestSuiteDispatcher.php,第162行中没有这样的文件或目录]

警告错误:include():打开“PHPUnit / Autoload.php”失败(include_path ='/ builds / zb2 / kswf / lib:。:/ usr / local / lib / php')in [/ builds / application_folder / lib / Cake / TestSuite / CakeTestSuiteDispatcher.php,第162行]

有一个与这个错误有关的问题 ,但它是通过从PHPUnit 4降级到PHPUnit 3来解决的。

这里是我用于GitLab Runner的图像的Dockerfile

FROM php:5 RUN apt-get update -y RUN apt-get install -y wget RUN sh -c 'wget -c https://phar.phpunit.de/phpunit-3.7.38.phar -O phpunit.phar && chmod +x phpunit.phar && mv phpunit.phar /usr/local/bin/phpunit' 

在我的.gitlab-ci.yml的before_script部分中,打印PHPUnit版本以validation是否安装了正确的版本,并打印了3.7.38。

我会很感激这方面的帮助!

那么,事情是,phpunit没有自己的自动加载文件,从v4开始(如果我没记错的话)。 在phpunit.phar中打包的所有文件都通过直接的代码内部需求语句(例如,5.3.4 phar这些语句占用了文件的第23-517行)。 想法是你的testing是通过CLI中的phpunit命令启动的,所以phar文件做了所有的准备工作,并启动了PHPUnit_TextUI_Command :: main()。

如果你需要从PHP代码启动testing(看起来就是这样),你需要自己照顾所有的准备工作。 如果提到只有类加载,你可以实现一个映射器和spl_autoload_register它,或创build一个类的转储,并创build一个文件,将包括所有文件从phpunit(如phar文件)。 另一个选项(从来没有尝试,但我认为这是可能的,虽然)可能是使用Composer为phpunit创build转储和自动加载器,它确实有这样的能力。

我已经为Komodo IDE实现了这样一个启动器,我select了第一个选项(我自己的dumper,mapper和autoloader),而不是立即包含所有的文件,并且只加载了实际需要的文件,并且能够运行和运行不同的版本的phpunit。

那么,这不是一个真正的答案,因为你不能只是复制粘贴,并得到的东西工作,我试图把一切作为一个评论,但没有设法足够短。