No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Iniciando nuestro proyecto: PHPUnit y clases heredadas

15/19
Recursos

Aportes 32

Preguntas 15

Ordenar por:

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

Es muy recomendado desarrollar con pruebas, así cuando tienes un error en tus páginas, las pruebas te ayudarán a identificarlos en lugar de estar media hora tratando de adivinar por qué decidí estudiar programación y no otra cosa jaja

Laravel tiene un módulo de pruebas con PHPUnit, así que les recomiendo mucho tomar mucha atención a estas clases.

TDD: Test Driven Development

Para Windows se debe ejecutar el comando así:

php vendor/phpunit/phpunit/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>

🚀Metodología TDD

📑Significa Desarrollo guiado por pruebas, o Tests-Driven Development es una práctica de ingeniería de software que involucra otras dos prácticas: Escribir las pruebas primero (Test First Development) y Refactorización (Refactoring).

🔴Rojo -> En este paso se crea la prueba la cual no tiene código creado y tiende a generar un fallo.
🟢Verde -> En verde se construye en código más sencillo para que la prueba funcione. En este paso es muy recomendado usar el principio KISS (Keep it Simple, Stupid).
🟣Refactorización-> Se trata de construir nuestro código de manera elegante y entendible para que nuestros compañeros lo entiendan, además de que le mismo no altere la prueba y mantenga el estado verde.

No entiendo porque el profesor nunca explica de que trata el proyecto que va a realizar, solo dice que haremos algo “muy interesante” y que comprenderemos todo, pero no hay una explicación de qué vamos a hacer y por qué se hace.
En clases posteriores se puede entender un poco más, pero es muy difícil seguir a este profesor y su método de enseñanza.
Realmente estoy siguiendo las recomendaciones de Platzi y no quiero saltarme los cursos pero se hace muy tedioso.

15. Iniciando nuestro proyecto: PHPUnit y clases heredadas

Estos son los pasos vistos en clase:

  1. Lo primero que hacemos es movernos al directorio donde vamos a trabajar (desde la terminal en Vscode). En mi caso yo uso PowerShell, tú puedes usar tu terminal de preferencia con tal que tengas instalado PHP y Composer 😃.
  2. Se debe ejecutar el siguiente comando:
composer require --dev phpunit/phpunit
  1. Abrimos el archivo composer.json y agregamos el siguiente código arriba de "require/dev":
"name": "aldo/post",
    "description": "Proyecto de OOP",
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
  1. Luego en la terminal debemor ejecutar el siguiente comando (esto crea el archivo autoloaddentro de la carpeta vendor:
composer dump
  1. Luego creamos un archivo nuevo llamado phpunit.xml y le colocamos dentro lo siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit boostrap="vendor/autoload.php" colors="true">
    <testsuite name="Test directory">
        <directory>tests</directory>
    </testsuite>
</phpunit>
  1. Luego creamos una nueva carpeta llamada tests y dentro creamos un archivo llamado PostTest.php conteniendo lo siguiente:
<?php

use PHPUnit\Framework\TestCase;
use App\Post;
use App\Comment;

class PostTest extends TestCase
{
    public function test_add_comment_to_post()
    {
        $post = new Post();
        $comment = new Comment();

        $post->addComment($comment);

        $this->assertEquals(1, $post->countComments());
        $this->assertInstanceOf(Comment::class, $post->getComments()[0]);
    }
}
  1. Luego en la terminal escribimos:
vendor/phpunit/phpunit/phpunit
  • Si estamos en Windows el comando es:
php vendor/phpunit/phpunit/phpunit

Aquí estamos aplicando la metodología TDD (Test Driven Development), o desarrollo guiado por pruebas.

PHPUnit es lo que se da en este curso o es mas complejo? porque siendo así bien se podría hacer un curso exclusivo de esto.

Con un poco de experiencia, también puedes iniciar tu proyecto mediante el comando:

composer init

y de ahi sería seguir instrucciones 😃 .

Entonces con TDD obtengo primero todos mis errores y voy solucionando uno por uno hasta quedar en verde?

😃 La metodología TDD (Test Driven Development) consiste en realizar primero las pruebas para posteriormente escribir el código a implementar.

Para los que están trabajando con el cmd directamente de VSCode ejecuten esto y les funcionará:

php vendor\phpunit\phpunit\phpunit .\tests\PostTest 

increíble el conocimiento en ésta clase!

Si alguien tuvo algun problema en Windows con el comando composer requiere -d-ev phpunit/phpunit

puede checar este link
https://www.geeksforgeeks.org/how-to-install-php-composer-on-windows/

después de instalar composer ya pude ejecutar el comando

🍃 El archivo PostTest.php es un archivo de prueba unitaria que utiliza el framework de pruebas PHPUnit para probar la funcionalidad de la clase Post.

Primero, se importan las clases necesarias, incluyendo la clase Post que se va a probar y la clase Comment que se utilizará para agregar comentarios al objeto Post.

Luego, se crea una clase de prueba PostTest que hereda de TestCase, la cual proporciona métodos para realizar pruebas unitarias.

Dentro de la clase PostTest, se define un método de prueba test_add_comment_to_post(). Este método crea una instancia de la clase Post y una instancia de la clase Comment, y luego agrega el comentario al objeto Post utilizando el método addComment().

A continuación, se utilizan los métodos assertEquals() y assertInstanceOf() proporcionados por PHPUnit para comprobar si el comentario se ha agregado correctamente al objeto Post.

El método assertEquals() compara el número de comentarios en el objeto Post con el valor esperado de 1. Si el número de comentarios no es igual a 1, la prueba falla.

El método assertInstanceOf() comprueba que el comentario agregado al objeto Post es una instancia de la clase Comment. Si el comentario no es una instancia de la clase Comment, la prueba falla.

En general, las pruebas unitarias se utilizan para garantizar que cada parte de un programa funciona correctamente de forma aislada, lo que ayuda a detectar errores de programación temprano y facilita la detección y corrección de errores.

Si queréis poner un nombre diferente a la función y evitar el error
1) Warning No tests found in class "PostTest".

tenéis dos soluciones:
1- El nombre de la función debe empezar por “test_”:
public function test_anadir_comentario_a_post() { //... }
2- Marcar la funcion previamente como test con un comentario:
/** @test */ public function anadir_comentario_a_post() { //... }

PostTest.php:

<?php 


use PHPUnit\Framework\TestCase; 
use App\Post; 
use App\Comment; 


class PostTest extends TestCase{
    
    public function test_add_comment_to_post(){
        $post = new Post();
        $comment = new Comment();

        $post->addComment($comment); 

        $this->assertEquals(1, $post->countComments()); 
        $this->assertInstanceOf(Comment::class, $post->getComments()[0]); 
    }

}
No me funcionó PostTest.php ![](https://static.platzi.com/media/user_upload/image-48c554ce-849a-469c-9729-266721c1f229.jpg) No sé porque no me reconoce TestCase al uncluirlo... no se si sea la versión de php unit
Espero y me puedan ayudar me aparece este error al querer ejecutar. PS C:\xampp\htdocs\backEnd> php vendor\phpunit\phpunit\phpunit Could not open input file: vendor\phpunit\phpunit\phpunit

Si no logran colocar el slash al reves " \ "

usen ALT+92

TDD : Hace referencia a desarrollo guiado por pruebas. test driven development).

Es la primera vez que trabajo con algo de Pruebas y la verdad no logro entender aún que estamos haciendo pero sigamos con el proyecto que seguramente al final quedara claro por que primero se comienza con esto.

Instalar phpunit con composer

También podéis iniciar los proyectos con el comando ‘composer init’.

En algunos servidores LAMP, los típicos hosting baratos, no se puede iniciar composer escribiendo simplemente ‘composer’. Primero tenéis que descargarlo de la web de composer copiando y pegando los comandos que os facilitan y luego para poder ejecutarlo tenéis que usar “php composer.phar”.

<?php

use PHPUnit\Framework\TestCase;
use APP\Post;
use APP\Comment;

class PostTest extends TestCase
{
    public function test_add_comment_to_post(){
        $post = new Post();
        $comment = new Comment();
        $post->addComment($comment);

        $this->assertEquals(1,$post->countComments());
        $this->assertInstanceOf(Comment::class, $post->getComments()[0]);
    }
}

Cuando ejecuto:

vendor/phpunit/phpunit/phpunit

en la terminal de VS Code me sale esto:

PHPUnit 9.5.3 by Sebastian Bergmann and contributors.

No tests executed!

No entiendo qué sucede, tengo composer instalado en mi Mac e hice todo lo anterior perfectamente.
Ayuda por favor. Gracias.

Los archivos Phpunit.xml siempre empiezan con versión 1.0?

Excelente


use PHPUnit\Framework\TestCase;
use APP\{Post, Comment};

class PostTest extends TestCase
{
    public function testAddCommentToPost(){
        $post = new \Post();
        $comment = new \Comment();
        $post->testAddComment($comment);

        $this->assertEquals(1,$post->countComments());
        $this->assertInstanceOf(Comment::class, $post->getComments()[0]);
    }
}```

cómo puedo instalar las dependencias en require con composer?

también pueden ejecutar vendor/bin/phpunit