PHPackages                             paki/laravel-auto-test - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Testing &amp; Quality](/categories/testing)
4. /
5. paki/laravel-auto-test

ActiveLibrary[Testing &amp; Quality](/categories/testing)

paki/laravel-auto-test
======================

Package Laravel pour générer automatiquement des tests unitaires.

v1.1.3(1y ago)18MITPHPPHP ^8.1

Since Jan 3Pushed 1y ago1 watchersCompare

[ Source](https://github.com/pakito312/autotest)[ Packagist](https://packagist.org/packages/paki/laravel-auto-test)[ RSS](/packages/paki-laravel-auto-test/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (1)Versions (5)Used By (0)

Laravel Test Generator
======================

[](#laravel-test-generator)

Un package Laravel pour générer automatiquement des tests unitaires pour les méthodes annotées avec `@Testable`.

Fonctionnalités
---------------

[](#fonctionnalités)

- **Génération automatique de tests unitaires** : Génère des tests pour les méthodes annotées avec `@Testable`.
- **Personnalisation des tests via des annotations** : Définissez la réponse attendue avec `@TestResponse` et le type d'assertion avec `@assertion` directement dans le docblock des méthodes.
- **Répertoires personnalisés** : Configurez le répertoire des classes à explorer (par défaut `Services`).
- **Types d'assertions supportés** : Vous pouvez choisir parmi plusieurs types d'assertions comme `assertEquals`, `assertNotNull`, `assertNull`, etc.

Installation
------------

[](#installation)

1. Ajouter le package à votre projet :

    ```
    composer require paki/laravel-auto-test
    ```
2. (Optionnel) Publier la configuration :

    ```
    php artisan vendor:publish --provider="Paki\AutoTest\TestGeneratorServiceProvider"
    ```

Exemple d'usage
---------------

[](#exemple-dusage)

### 1. Usage de base

[](#1-usage-de-base)

Ajoutez l'annotation `@Testable` à la méthode que vous souhaitez tester. Cela indiquera au package que cette méthode doit être testée automatiquement.

```
/**
 * @Testable
 */
public function someMethod()
{
   // Logique de la méthode
}
```

### 2. Personnaliser la réponse attendue

[](#2-personnaliser-la-réponse-attendue)

Si vous souhaitez définir une réponse attendue pour le test, vous pouvez utiliser l'annotation `@TestResponse` dans le docblock de votre méthode.

```
/**
 * @Testable
 * @TestResponse "Success"
 */
public function someMethod()
{
   // Logique de la méthode
}
```

### 3. Personnaliser le type d'assertion

[](#3-personnaliser-le-type-dassertion)

L'annotation `@assertion` permet de spécifier le type d'assertion à utiliser dans le test généré. Par exemple, vous pouvez utiliser `assertNull` ou `assertEquals`.

```
/**
 * @Testable
 * @assertion assertNull
 */
public function someOtherMethod()
{
   // Logique de la méthode
}
```

### 4. Exemple complet avec plusieurs annotations

[](#4-exemple-complet-avec-plusieurs-annotations)

Voici un exemple où nous combinons `@Testable`, `@TestResponse` et `@assertion` pour personnaliser entièrement le test généré.

```
/**
 * @Testable
 * @TestResponse "200 OK"
 * @assertion assertEquals
 */
public function getUserDetails()
{
   // Logique de la méthode
}
```

Ce test vérifiera que la méthode `getUserDetails()` retourne `"200 OK"` en utilisant l'assertion `assertEquals`.

```
  /**
     * @Testable
     * @TestInput: {"name": "paki","message":"test message"}
     * @AssertStatus 201
     */
    public function create(Request $request)
    {
        $this->validate($request, [
            'name' => "required",
            'message' => "required"
        ]);
        return response()->json([], 201);
    }
```

```
  /**
     * @Testable
     * @TestResponse "User Created"
     * @TestParam: name='test'
     */
    public function createUser($name)
    {
        return "User Created";
    }
```

### 5. Commande artisan pour générer les tests

[](#5-commande-artisan-pour-générer-les-tests)

1. **Générer des tests pour un répertoire spécifique avec une réponse et assertion personnalisées** :

    Pour générer des tests pour le répertoire `Services` avec une réponse `"Success"` et une assertion `assertEquals`, vous pouvez exécuter la commande suivante :

    ```
    php artisan generate:tests --directory=Services --assertion=assertEquals --response="Success"
    ```
2. **Générer des tests pour un autre répertoire (par exemple `Controllers`)** :

    ```
    php artisan generate:tests
    ```
3. **Générer des tests avec l'assertion par défaut `assertNotNull`** :

    ```
    php artisan generate:tests
    ```
4. **Générer des tests avec des dépendances mockées** :

    Si vous souhaitez mocker des dépendances dans vos tests, utilisez l'option `--mock` :

    ```
    php artisan generate:tests --mock="App\\Services\\SomeService"
    ```
5. **Activer les tests de performance** :

    Pour activer les tests de performance, utilisez l'option `--performance=true` :

    ```
    php artisan generate:tests --performance=true
    ```

Options disponibles
-------------------

[](#options-disponibles)

- `--directory` : Le répertoire des classes à explorer (par défaut `Controller`).
- `--response` : La réponse attendue pour les tests générés (par défaut `null`).
- `--assertion` : Le type d'assertion à utiliser pour les tests (par défaut `assertNotNull`).
- `--mock` : Les dépendances à mocker (par exemple `App\\Services\\SomeService`).
- `--performance` : Activer les tests de performance (`true`/`false`).

Structure des tests générés
---------------------------

[](#structure-des-tests-générés)

Les tests générés seront enregistrés dans le répertoire `tests/Unit/` et auront des noms basés sur les classes que vous avez annotées avec `@Testable`. Par exemple, si vous avez une classe `SomeService`, le test sera généré sous le nom `SomeServiceTest.php`.

Chaque méthode annotée avec `@Testable` générera un test avec la structure suivante :

```
public function testMethodName()
{
    $instance = new SomeService();
    $result = $instance->methodName();

    // L'assertion choisie (par défaut assertNotNull)
    $this->assertEquals('Success', $result);
}
```

Limitations et À venir
----------------------

[](#limitations-et-à-venir)

- Ce package génère des tests de base pour des méthodes simples. Les tests complexes, notamment ceux qui nécessitent une logique plus avancée, peuvent nécessiter une personnalisation manuelle.
- La prise en charge des tests de performance est encore limitée aux tests de base sur le temps d'exécution de la méthode.

---

Contributions
-------------

[](#contributions)

Les contributions sont les bienvenues ! Si vous souhaitez ajouter des fonctionnalités ou corriger des bugs, veuillez ouvrir une **pull request** sur GitHub.

Licence
-------

[](#licence)

Ce package est sous licence MIT. Consultez le fichier [LICENSE](LICENSE) pour plus de détails.

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance41

Moderate activity, may be stable

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~1 days

Total

4

Last Release

492d ago

PHP version history (2 changes)v1.1.0PHP ^8.0

v1.1.1PHP ^8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/63ef6b122152d47a00e190ec7565c97ca4dc4354817323f45226b5172e932b9e?d=identicon)[pakito312](/maintainers/pakito312)

---

Top Contributors

[![pakito312](https://avatars.githubusercontent.com/u/40355919?v=4)](https://github.com/pakito312 "pakito312 (14 commits)")

### Embed Badge

![Health badge](/badges/paki-laravel-auto-test/health.svg)

```
[![Health](https://phpackages.com/badges/paki-laravel-auto-test/health.svg)](https://phpackages.com/packages/paki-laravel-auto-test)
```

###  Alternatives

[larastan/larastan

Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel

6.4k43.5M5.2k](/packages/larastan-larastan)[timacdonald/log-fake

A drop in fake logger for testing with the Laravel framework.

4235.9M56](/packages/timacdonald-log-fake)[illuminate/testing

The Illuminate Testing package.

3315.6M113](/packages/illuminate-testing)[christophrumpel/missing-livewire-assertions

This package adds missing livewire test assertions.

149336.0k9](/packages/christophrumpel-missing-livewire-assertions)[calebdw/larastan-livewire

A Larastan / PHPStan extension for Livewire.

43482.4k3](/packages/calebdw-larastan-livewire)[encodia/laravel-health-env-vars

Custom check for Spatie's Laravel Health - Ensure every .env variable you need has been set

20143.5k](/packages/encodia-laravel-health-env-vars)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
