Para poder ejecutar el código que veremos en las próximas clases deberás contar con un entorno donde poder ejecutar PHPUnit (El framework de pruebas unitarias más utilizado con PHP).
Si no tienes aún instalado el cliente de git puedes descargarlo de https://git-scm.com/downloads (Selecciona la descarga que corresponda con tu sistema operativo).
Si utilizas Windows es muy recomendable descargar GitBash (Una consola tipo POSIX que incluye todas las herramientas que necesitarás para interactuar cómodamente con el sistema de control de versiones)
Una vez tengas git instalado, abre un terminal y clona el repositorio con el comando git clone [email protected]:mchojrin/platzi-tdd.git
2. Instalar PHP
Si estás en un entorno Linux o Mac probablemente ya tendrás PHP instalado, con lo cual puedes saltar este paso.
Si estás en Windows deberás descargar PHP de aquí y probablemente también tengas que instalar el Runtime de Visual C++ que puedes descargar de aquí.
Para comprobar que la instalación haya sido exitosa debes abrir una terminal y ejecutar el comando php -v.
Deberías ver algo como:
3. Instalar Composer
Una vez instalado PHP el siguiente paso es instalar composer, un manejador de dependencias para php (Puedes leer más de qué se trata aquí).
La forma más simple de instalar composer es hacerlo a través del propio php siguiendo las instrucciones presentes aquí.
PHPUnit es una librería estándar para la ejecución de pruebas unitarias de PHP.
En general puedes descargarlo de aquí. En este caso, utilizaremos la versión de instalación por proyecto.
PHPUnit es la dependencia principal de nuestro proyecto, si tienes instalado composer, su instalación es muy simple.
Sólo debes abrir una terminal en el directorio donde descargaste el proyecto y ejecutar composer install.
El resultado debería verse similar a:
Para verificar la instalación ejecuta el comando php vendor/phpunit/phpunit/phpunit
La salida debería verse así:
5. Configurar el entorno
Durante este curso utilizamos Visual Studio Code. Si ya dispones de otro entorno y lo conoces bien puedes utilizarlo, si no tienes preferencia te recomiendo que utilices VS Code.
PHP Fatal error: Uncaught Error: Interface 'PHPUnit_Runner_TestSuiteLoader' not found in C:\xampp\php\pear\PHPUnit\Runner\StandardTestSuiteLoader.php:57
Stack trace:
#0
Soy nuevo en esto de PHP, pero noté que este error lo da el autoload, así que creí que reutilizando el xml de cursos anteriores y volviendolo a generar se arreglaría, y efectivamente.
Espero les sirva
Para quienes les presente el siguiente error en consola:
[email protected]:~/Desktop/php/platzi-tdd$ php composer.phar install
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Installation request for phar-io/manifest 1.0.3 -> satisfiable by phar-io/manifest[1.0.3].
- phar-io/manifest 1.0.3 requires ext-dom * -> the requested PHP extension dom is missing from your system.
Problem 2
- Installation request for phpunit/php-code-coverage 7.0.5 -> satisfiable by phpunit/php-code-coverage[7.0.5].
- phpunit/php-code-coverage 7.0.5 requires ext-dom * -> the requested PHP extension dom is missing from your system.
Problem 3
- Installation request for phpunit/phpunit 8.2.2 -> satisfiable by phpunit/phpunit[8.2.2].
- phpunit/phpunit 8.2.2 requires ext-dom * -> the requested PHP extension dom is missing from your system.
Problem 4
- Installation request for theseer/tokenizer 1.1.3 -> satisfiable by theseer/tokenizer[1.1.3].
- theseer/tokenizer 1.1.3 requires ext-dom * -> the requested PHP extension dom is missing from your system.
To enable extensions, verify that they are enabled in your .ini files:
- /etc/php/7.3/cli/php.ini
- /etc/php/7.3/cli/conf.d/10-opcache.ini
- /etc/php/7.3/cli/conf.d/10-pdo.ini
- /etc/php/7.3/cli/conf.d/20-calendar.ini
- /etc/php/7.3/cli/conf.d/20-ctype.ini
- /etc/php/7.3/cli/conf.d/20-exif.ini
- /etc/php/7.3/cli/conf.d/20-fileinfo.ini
- /etc/php/7.3/cli/conf.d/20-ftp.ini
- /etc/php/7.3/cli/conf.d/20-gettext.ini
- /etc/php/7.3/cli/conf.d/20-iconv.ini
- /etc/php/7.3/cli/conf.d/20-json.ini
- /etc/php/7.3/cli/conf.d/20-phar.ini
- /etc/php/7.3/cli/conf.d/20-posix.ini
- /etc/php/7.3/cli/conf.d/20-readline.ini
- /etc/php/7.3/cli/conf.d/20-shmop.ini
- /etc/php/7.3/cli/conf.d/20-sockets.ini
- /etc/php/7.3/cli/conf.d/20-sysvmsg.ini
- /etc/php/7.3/cli/conf.d/20-sysvsem.ini
- /etc/php/7.3/cli/conf.d/20-sysvshm.ini
- /etc/php/7.3/cli/conf.d/20-tokenizer.ini
You can also run `php --ini` inside terminal to see which files are used by PHP inCLI mode.
En GitHub están tres archivos que me generaban incompatibilidad al momento de hacer las pruebas, estos archivos fueron composer.lock, composer.json y phpunit.xml. No sé si hice bien, pero los eliminé y luego ejecuté el comando
composerrequire phpunit/phpunit
Una vez instalado phpunit, todo me funcionó bien. (Es de aclarar que primero elimino los archivos y luego ejecuto el comando para proceder con la instalación)
Tuve que eliminar los archivos compuser y phpunit que venian en el repositorio de Git ya que me salía un error “Class not found”. Al eliminar esos 3 archivos el test funcionó! Por si ayuda a alguien.
Yo tenía un error después de composer install
y aún tratando las soluciones acá mencionadas, no podía arreglarlo, investigué un poco y con sudo apt-get install php-xml
y luego con php -m
para verificar que estaba ahí dom
Luego volví a ingresar composer install
De esa manera pude resolver el error y el resultado en la terminal fue el esperado c: les dejo mi experiencia por si a alguien le pasa algo parecido.
Si tenéis Windows 10 Pro, recomiendo muchísimo utilizar el Subsistema de Windows para Linux (WSL), el cual se instala desde la Microsoft Store.
Es como tener una máquina virtual, pero sin tantas complicaciones, y si utilizas VSCode, aún es más sencillo, porque puedes decirle que trabajas como si estuvierar dentro del subsistema y la terminal te aparece como Linux (bash).
Para las personas que no les permite descargar acá el link de repositorio https://github.com/mchojrin/platzi-tdd donde dice clonar o download y descargan el ZIP.
No sé si fue error mío, pero al hacer clone al repositorio no me trajo la carpeta vendor y cuando ejecuto “php vendor/phpunit/phpunit/phpunit tests” me aparece el error “Could not open input file: vendor/phpunit/phpunit/phpunit”. Les agradeceré cualquier tipo de ayuda 😄
Todo Bien, pero al correr el comando php vendor/phpunit/phpunit/phpunit, me sale este error.
Algunos archivos no los consigue en mi directorio de PHP (Xammp). Alguien sabe de donde pudiera obtener estos archivos?
Gracias.
Webmaster@DESKTOP-T29PADC MINGW64 /d/xampp/htdocs/platzi-tdd (master)
$ php vendor/phpunit/phpunit/phpunit
PHP Fatal error: Interface 'PHPUnit_Runner_TestSuiteLoader' not found inD:\xampp\php\pear\PHPUnit\Runner\StandardTestSuiteLoader.php on line 57
Fatal error: Interface 'PHPUnit_Runner_TestSuiteLoader' not found inD:\xampp\php\pear\PHPUnit\Runner\StandardTestSuiteLoader.php on line 57
Intente hacer la instalación, sin embargo obtuve el siguiente error:
PHP Fatal error: Declaration of PHPUnit\Runner\StandardTestSuiteLoader::load($suiteClassName, $suiteClassFile = ‘’) must be compatible with PHPUnit\Runner\TestSuiteLoader::load(string $suiteClassName, string $suiteClassFile = ‘’): ReflectionClass in /usr/share/php/PHPUnit/Runner/StandardTestSuiteLoader.php on line 20
¿Alguién que pueda ayudarme? He buscado en foros, pero sólo he logrado confundirme más.
Fatal error: Interface ‘PHPUnit_Runner_TestSuiteLoader’ not found in C:\xampp\php\pear\PHPUnit\Runner\StandardTestSuiteLoader.php on line 57
PS C:\xampp\htdocs\platzi-tdd>
Me sale este error al correr la consola en el visual code ayuda !!
composer es un manejador de dependencias de PHP, lo correcto es usarlo siempre, PHPUnit es una dependencia igual, así que es igual una buena practica usar composer para PHP
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.