Maison >développement back-end >tutoriel php >Tests unitaires de code PHP et tests d'intégration

Tests unitaires de code PHP et tests d'intégration

WBOY
WBOYoriginal
2024-05-07 08:00:02831parcourir

Guide des tests unitaires et d'intégration PHP Tests unitaires : concentrez-vous sur une seule unité de code ou de fonction et utilisez PHPUnit pour créer des classes de cas de test à des fins de vérification. Tests d'intégration : concentrez-vous sur la façon dont plusieurs unités de code fonctionnent ensemble et utilisez les méthodes setUp() et TearDown() de PHPUnit pour configurer et nettoyer l'environnement de test. Cas pratique : utilisez PHPUnit pour effectuer des tests unitaires et d'intégration dans les applications Laravel, notamment la création de bases de données, le démarrage de serveurs et l'écriture de code de test.

PHP 代码单元测试与集成测试

Tests unitaires et tests d'intégration de code PHP

Introduction

Les tests unitaires et les tests d'intégration sont des types de tests cruciaux dans le développement de logiciels, qui peuvent garantir l'exactitude et la fiabilité du code à différents niveaux sexuels. Cet article vous guidera dans l'utilisation de PHPUnit pour les tests unitaires et les tests d'intégration du code PHP.

Tests unitaires

Les tests unitaires se concentrent sur une seule unité ou fonction du code. Afin de créer des tests unitaires, vous devez créer des classes de cas de test à l'aide de PHPUnit. Utilisons un exemple simple :

<?php

class SumTest extends PHPUnit_Framework_TestCase
{
    public function testSum()
    {
        $a = 2;
        $b = 3;
        $result = $a + $b;
        $this->assertEquals($result, 5);
    }
}

Dans ce test, la méthode testSum() vérifie que $a + $b est égal à 5. testSum() 方法验证了 $a + $b 是否等于 5。

集成测试

集成测试关注代码的多个单元共同工作的正确性。对于集成测试,您需要使用 PHPUnit 的 setUp()tearDown() 方法来设置和清除测试环境。让我们举一个简单的示例:

<?php

class UserServiceTest extends PHPUnit_Framework_TestCase
{
    protected $userService;

    public function setUp()
    {
        $this->userService = new UserService();
    }

    public function testGetUser()
    {
        $user = $this->userService->getUser(1);
        $this->assertEquals($user->getName(), 'John Doe');
    }

    public function tearDown()
    {
        unset($this->userService);
    }
}

在这个测试中,我们首先在 setUp() 方法中设置用户服务。然后,我们调用 getUser() 方法,并验证返回的用户名称是否正确。最后,我们在 tearDown()

Tests d'intégration

Les tests d'intégration se concentrent sur l'exactitude de plusieurs unités de code travaillant ensemble. Pour les tests d'intégration, vous devez utiliser les méthodes setUp() et tearDown() de PHPUnit pour configurer et effacer l'environnement de test. Prenons un exemple simple :

# 创建一个名为 "testing" 的数据库
php artisan migrate --database=testing

# 启动 PHP 内置服务器
php artisan serve

Dans ce test, nous avons d'abord configuré le service utilisateur dans la méthode setUp(). Nous appelons ensuite la méthode getUser() et vérifions que le nom d'utilisateur renvoyé est correct. Enfin, nous nettoyons l'environnement dans la méthode tearDown().

Cas pratique

Ce qui suit est un cas pratique utilisant PHPUnit pour effectuer des tests unitaires et d'intégration dans des applications Laravel.

Créer un environnement de test

# tests/Feature/UserTest.php
namespace Tests\Feature;

use Tests\TestCase;

class UserTest extends TestCase
{
    public function testCreateUser()
    {
        $response = $this->post('/user', [
            'name' => 'John Doe',
            'email' => 'john@example.com',
            'password' => 'password',
        ]);

        $response->assertStatus(201);
    }
}

Écrire des tests unitaires

# tests/Feature/UserServiceTest.php
namespace Tests\Feature;

use Tests\TestCase;

class UserServiceTest extends TestCase
{
    public function testGetUser()
    {
        $user = \App\Models\User::factory()->create();

        $response = $this->get('/user/' . $user->id);

        $response->assertStatus(200);
        $response->assertJson(['name' => $user->name]);
    }
}

🎜Écrire des tests d'intégration🎜🎜
# 运行单元测试
phpunit tests/Unit

# 运行集成测试
phpunit tests/Feature
🎜🎜Exécuter des tests🎜🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn