No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

15 Días
16 Hrs
23 Min
47 Seg

Armado del entorno de pruebas en PHP

20/26

Lectura

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).

...

Regístrate o inicia sesión para leer el resto del contenido.

Aportes 58

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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

La correcta sentencia para clonar el repositorio es:
git clone https://github.com/mchojrin/platzi-tdd

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

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)

Si les sale un error de actualización del PHPUnit, pueden probar lo siguiente:

composer remove phpunit/phpunit --dev
composer require phpunit/phpunit --dev

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```

![Capture.PNG](https://static.platzi.com/media/user_upload/Capture-f5264200-7467-4a13-8c28-09dcfc42a193.jpg)

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).

Si desean cambiar a linux, les recomiendo Fedora

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

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

yo tengo windows, en mi caso clonar el repositorio me genero errores. (osea no lo clone)
lo que me funciono fue:

  • no olvidar inicializar el servidor de apache
  • cree un nuevo proyecto con
    composer require --dev phpunit/phpunit
  • copie el archivo phpunit.xml que estaba en el proyecto
  • cree la carpeta tests e hice el archivo unTests.php como se muestra en las instrucciones.
  • corri las pruebas que muestran las instrucciones y me funciono.
A la fecha (abril/2024) y de acuerdo con la documentación en la página de phpUnit, la instrucción para instalar esta librería usando composer es: `composer require --dev phpunit/phpunit ^8` Y para probar su correcta instalación: `.\vendor\bin\phpunit --version` Para usuarios Windows que no tengan **php** en el PATH del sistema, se deberá editar el archivo `vendor\bin\phpunit.bat` para ajustar el path requerido para ejecutar **php**.
A mi me toco crear carpetas y archivos desde cero, pero me ayudo porque así recordé cosas y las puse a prueba.
Varios puntos a tener en cuenta para quienes utilizan PHP 8 en adelante: * Probablemente les de error al intentar ejecutar los tests por incompatibilidad de dependencias, los pasos para coorregir estos errores: * `composer remove phpunit/phpunit --dev` * `composer require phpunit/phpunit --dev` * `composer update` * `vendor/bin/phpunit tests --migrate-configuration` * El comando para ejecutar los tests es `vendor/bin/phpunit` en lugar de `vendor/phpunit/phpunit/phpunit` * Para no tener que especificar la carpeta `tests` se puede configurar en el archivo `phpunit.xml` dentro de las etiquetas `phpunit` ``` \<testsuite *name*="Test directory"> \<directory>tests\</directory> \</testsuite> ```
si tienen problemas con phpunit para las pruebas, les recomiendo este video, me funciono es posible que aclare algunas dudas de composer y phpunit. <https://www.youtube.com/watch?v=iuftr_JTnbM>

Si estás en Windows puedes seguir estos pasos:
.

  1. Descarga Composer desde: https://getcomposer.org/download/
  2. Ubícate en la raíz de tu proyecto y crea un archivo composer.json.
{
    "autoload": {
        "psr-4": {
            "": "src/"
        }
    },
    "require-dev": {
        "phpunit/phpunit": "^9.0"
    }
}
  1. Ejecuta el comando:
    composer install --dev


4. Crea una carpeta tests al mismo nivel que la carpeta vendor.
5. Crea dentro de tests un archivo de prueba FirstTest.php.

<?php
use PHPUnit\Framework\TestCase;

require_once __DIR__ . '/../Calculator.php'; // Esto es necesario para cargar la clase Calculator

class FirstTest extends TestCase {
    public function testAdd() {
        $calculator = new Calculator(); // Ahora PHPUnit puede encontrar la clase

        $result = $calculator->add(2, 3);
        $this->assertEquals(5, $result);
    }
}
  1. Crea la clase Calculator.php fuera de la carpeta tests.
<?php
class Calculator {
    public function add($a, $b): int {
        return $a + $b;
    }
}
  1. En mi caso la raiz de mi proyecto es una carpeta llamada phpUnit, quedando de la siguiente manera:

.

8. Estando en la raíz ejecutamos el comando:
composer dump-autoload y tambíen php vendor/bin/phpunit tests.

.

.

Esta es una forma para utilizar phpUnit ^9.0 en 2023, no es tal cual la versión utilizada en el curso pero funciona con PHP ^8.0.

A fecha 12 de agosto de 2023, veo que tanto los archivos como la explicación se encuentran bastante antiguos, lo que hace que existan algunos inconvenientes a la hora de realizar el ejercicio, por lo que es necesario o bien revisar los cursos o dejarlos un poco más genéricos para poderlos llevar a cabo en cualquier momento. Fue necesario realizar investigación directa a la página de PHPunit para poder realizar la correcta configuración del entorno.

Para el 2023:

Eliminen el composer.lock y ejecuten:

composer remove phpunit/phpunit --dev
composer require phpunit/phpunit --dev

Usar en el phpUnit.xml el siguiente código:

<phpunit
        xmlns:xsi=
        xsi:noNamespaceSchemaLocation=
        backupGlobals="false"
        backupStaticAttributes="false"
        colors="true"
        convertErrorsToExceptions="true"
        convertNoticesToExceptions="true"
        convertWarningsToExceptions="true"
        processIsolation="false"
        stopOnFailure="false"
        bootstrap="vendor/autoload.php"
>
        <testsuites>
                <testsuite name="My Test Suite">
                        <directory suffix="Test.php">./tests</directory>
                </testsuite>
        </testsuites>
        <php>
                <ini name="error_reporting" value="E_ALL | E_STRICT" />
        </php>
</phpunit>

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 in D:\xampp\php\pear\PHPUnit\Runner\StandardTestSuiteLoader.php on line 57

Fatal error: Interface 'PHPUnit_Runner_TestSuiteLoader' not found in D:\xampp\php\pear\PHPUnit\Runner\StandardTestSuiteLoader.php on line 57

Recuerden que para que el phpunit “haga” el test, su archivo con la prueba debe de tener en el nombre la palabra “Test” con t mayúscula, sino no lo ejecuta.

Recordaba de clases pasadas en php que tenía que llamarse test, pero no que tenía que ser Test.

en el 2022, da error en windows al hacer:

composer install

para eso, simplemente cambié en el composer.json la línea requiere por esto:

"require": {
    "phpunit/phpunit": "^8.2.2"
  },

Y ya deja instalar con compose install

No se puede descargar repositorio

He tenido dificultades tratando de armar el entorno de pruebas usando windows

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 😄

Paso a paso 😳😳

Listo!

resultado

C:\laragon\www\platzi-tdd (master)
λ php vendor/phpunit/phpunit/phpunit
PHPUnit 8.2.2 by Sebastian Bergmann and contributors.



Time: 68 ms, Memory: 2.00 MB

No tests executed!

C:\laragon\www\platzi-tdd (master)
λ composer dump
Generated autoload files containing 566 classes

C:\laragon\www\platzi-tdd (master)
λ php vendor/phpunit/phpunit/phpunit tests
PHPUnit 8.2.2 by Sebastian Bergmann and contributors.

.                                                                   1 / 1 (100%)

Time: 70 ms, Memory: 4.00 MB

OK (1 test, 1 assertion)

C:\laragon\www\platzi-tdd (master)
λ composer dump

Todo listo.

PHPUnit 3.7.21
me sale esto

Ademas recomiendo que usen linux o mac en windows es mas complicado

para que me saliera tuve que poner

php vendor/phpunit/phpunit/phpunit tests/*
PHPUnit 8.2.2 by Sebastian Bergmann and contributors.

. 1 / 1 (100%)

Time: 50 ms, Memory: 4.00 MB

listo!!

archivo unTest.php

<?php

use PHPUnit\Framework\TestCase;

class unTest extends TestCase {
    public function testTrue() {
        $this->assertTrue( true );
    }
}

Esta clase me ayudará mucho a proyectos futuros 😀👌

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.

Muy detallado el tutorial. Me gustó.

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 !!

perfecto

#Nice

Todo OK.

Muy bien explicado el paso a paso.

Perfecto. Gracias

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

Listo

Mmmm… Lo hare en Python

Agggghhhhhh eres curso es buenisimo!!! Pero usar Php lo lastra q_Q.

Hola, he intentado realizar el test pero me sale el mensaje " No tests executed", he googleado pero no encuentro la solucion

Alguien que me ayude por favor

Hola no se si alguien me puede ayudar?, me da el error que algunos han comentado abajo también.

Al ejecutar estos comandos, me envía el mismo error:

  • php vendor/phpunit/phpunit/phpunit
  • php vendor/phpunit/phpunit/phpunit tests

por aquí todo listo

<?php

use PHPUnit\Framework\TestCase;

class UnTest extends TestCase{
    public function testTest()
    {
        $this->assertTrue( true );
    }
}

Todo listo!