Armado del entorno de pruebas en PHP
Clase 20 de 26 • Curso de Patrones de Diseño y Buenas Prácticas en PHP
Contenido del curso
Clase 20 de 26 • Curso de Patrones de Diseño y Buenas Prácticas en PHP
Contenido del curso
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).
1. Descargar el proyecto
El primer paso es clonar el repositorio https://github.com/mchojrin/platzi-tdd
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 git@github.com: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í.
Si utilizas Windows puedes usar este instalador.
4. Instalar PHPUnit
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.
Puedes descargarlo de https://code.visualstudio.com/Download
Una vez instalado abre la carpeta donde descargaste el proyecto en Visual Studio:
Deberías ver algo como:
Escribe un primer test para verificar que todo está configurado correctamente:
Y para ejecutarlo, abre un terminal dentro del Visual Studio Code:
Una vez en la consola escribe el comando: php vendor/phpunit/phpunit/phpunit tests
Y deberás ver en la salida:
Con esto tendrás todo lo necesario para avanzar a la próxima clase.
¡Nos vemos!
Lucas Alvarez
Juan Pablo Campuzano Monsalve
Camilo Gonzalez
Walter Omar Barrios Vazquez
Marudsa Muñoz Cifuentes
Jhon Alexander Romero Gonzaga
Julian David Toro Medina
Ricardo Miguel Prigent
DAVID Pareja Arango
Eduardo Reyes
Carlos Javier Flores Cardona
Daniel Ernesto Rios Lopez
WILY RAMOS
Cristian Andres Ladino Peña
Jazmín Hernández Estrada
Rubén Calderón García
Rubén Darío Rodríguez Mora
Ana Verde
Kevin Lozoya Giner
Jorge Luis Paiva Huamán
Jesús Manuel Mejía Rojas
Juan Pedraza
Daniel Esteban Santos Mendez
Mauricio Rodriguez Romero
Dicson Quimbayo
Cristian Andres Ladino Peña
Alejandro Tangarife Rivas
Ricardo Carmona Rodriguez
ernesto
Franklin Peñafiel
Ivan Martinez
Férdin Emanuel Cardona Martínez
Ermilo Joel Dorantes Uc
Kenneth Angulo L
Agustin Baigorria
Lisandro Andrade Franco
Para los que le da el error:
PHP Fatal error: Uncaught Error: Interface 'PHPUnit_Runner_TestSuiteLoader' not found in C:\xampp\php\pear\PHPUnit\Runner\StandardTestSuiteLoader.php:57 Stack trace: #0
Dentro de su phpunit.xml pongan:
<?xml version="1.0" encoding="UTF-8"?> <phpunit bootstrap="vendor/autoload.php" colors="true"> <testsuite name="Test directory"> <directory>test</directory> </testsuite> </phpunit>
Y lluego ejecutan el comando
composer dump
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
Que buen aporte!
La correcta sentencia para clonar el repositorio es: git clone https://github.com/mchojrin/platzi-tdd
¡Gracias!
¡Gracias ahora si pude clonar!
Para quienes les presente el siguiente error en consola:
romero@romero:~/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 in CLI mode.
Deben instalar las siguientes extensiones:
sudo apt-get install php-xml php-mbstring
Muchas gracias! Yo sí decía que algo no me andaba bien :D
Gracias me re salvaste.
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
composer require 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)
🍃 Muy cierto, yo eliminé el archivo phpunit.xml y copie el de otras clases para que funcionara.
Si les sale un error de actualización del PHPUnit, pueden probar lo siguiente:
composer remove phpunit/phpunit --dev composer require phpunit/phpunit --dev
En 2023 este me funcionó ❤
2024 funcionó
Funcionó! en Windows 10
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.
Test.php
<?php use PHPUnit\Framework\TestCase; class Test extends TestCase { public function testTest() { $this->assertTrue(true); } } composer.json { "name": "rubencalderongarcia/TDD", "description": "Proyecto de TDD", "autoload": { "psr-4": { "App\\": "src/" } }, "require-dev": { "phpunit/phpunit": "^9" } } phpunit.xml <?xml version="1.0" encoding="UTF-8"?> <phpunit bootstrap="vendor/autoload.php" colors="true"> <testsuite name="Test directory"> <directory>tests</directory> </testsuite> </phpunit> Resultado en Terminal: ~/Documents/Platzi_2021/Buenas prácticas para la escritura de código(master*) » php vendor/phpunit/phpunit/phpunit PHPUnit 9.5.1 by Sebastian Bergmann and contributors. . 1 / 1 (100%) Time: 00:00.013, Memory: 6.00 MB OK (1 test, 1 assertion) ------------------------------
Fué complejo pero pude. Tengo Windows pero con WSL con Ubuntu 20.04 LTS Los pasos sin errores fueron los siguientes:
git clone git@github.com:mchojrin/platzi-tdd.git php -v cd platzi-tdd php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '756890a4488ce9024fc62c56153228907f1545c228516cbf63f885e036d37e9a59d27d63f46af1d4d07ee0f76181c7d3') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" wget -O phpunit https://phar.phpunit.de/phpunit-8.phar chmod +x phpunit ./phpunit --version composer install --ignore-platform-reqs crear el archivo php <?php use PHPUnit\Framework\TestCase; class unTest extends TestCase { public function testTest() { $this->assertTrue(true); } } php vendor/phpunit/phpunit/phpunit tests``` 
Muchas gracias... tenia mil problemas para instalar..
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).
Ahora es más facil instalar Git e indicarle que use Bash Linux
Si desean cambiar a linux, les recomiendo Fedora
¿Cómo se comporta con las gráficas NVIDIA?
La última vez que intente instalar PHP me toco reinstalar Ubuntu jajajaja, esta vez salio bien.
hola, cual es la opción mas recomendable para usar con Windows 10??
Debo descargar el codigo fuente? o el test package?
Debo bajar el archivo .zip o el debug pack o el development package?
Mil gracias por su orientación
Hola
Si te refieres a instalar PHP, es mejor descargar el .zip te dejo un video tutorial explican cada paso
Quedo atento a cualquier inquietud
Gracias Dicson. Ese video me ayudó. Estaba re perdido jaja
Pueden instalar todas las dependencias necesarias SOLO! - abriendo la consola, y desde la ruta del proyecto escriben:
php composer.phar install
Con eso les debería instalar lo necesario. Para que no tengan que entrar a los links y se les dificulte la instalación de los paquetes.
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.
Una opcion para correr el comando de php unit un poco mas corta seria esta
vendor/bin/phpunit tests
¿Alguno me puede dar una idea de cómo instalar php en mac? estaba usando mamp pero no me permite usarlo en el terminal, principalmente me dice que php no existe y no puedo instalar componser
Alguien me puede ayudar con el siguiente inconveniente por favor? He buscado varias soluciones pero no me funciona
Recuerdo haber tenido un problema parecido, revisa bien en el archivo phpunit.xml como está la configuración, por ahí puede estar la solución. Igual recuerdo que tuve problemas con el nombre de la carpeta test en singular y creo que iba en plural, tests.
Hola. En la linea 3 te falta un espacio despues de la palabra use . Deberia ser:
use PHPUnit\Framework\TestCase;
Tengo una consulta despues de hacer los pasos y tratar de probar con el comando php vendor/phpunit/phpunit/phpunit, me salta el siguiente error "Could not use "PHPUnit\TextUI\ResultPrinter" as printer: class does not exist"
yo tengo windows, en mi caso clonar el repositorio me genero errores. (osea no lo clone) lo que me funciono fue: