Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/vinceamstoutz/php-demo-mutation-testing

PHP 8.3 demo for Mutation Testing using PHPUnit & Pest
https://github.com/vinceamstoutz/php-demo-mutation-testing

coverage-testing mutation-testing pest php phpunit quality

Last synced: 1 day ago
JSON representation

PHP 8.3 demo for Mutation Testing using PHPUnit & Pest

Awesome Lists containing this project

README

        

# Mutation Testing Demo

Ce projet accompagne la conférence **"Débusquez les failles cachées : Maîtrisez vos tests PHP avec PHPInfection & Pest"**,
présentée par Vincent Amstoutz.

L'objectif de cette conférence est de montrer comment les tests de mutations peuvent renforcer la robustesse
des tests PHP, en utilisant des outils tels qu'[Infection PHP](https://infection.github.io/) et [Pest](https://pestphp.com/).

## Prérequis ⚠️

> [!IMPORTANT]
> Les commandes décrites ci-dessous nécessitent l'utilisation de [Castor](https://castor.jolicode.com/) ! Assurez-vous que Castor est bien installé et configuré sur votre machine.

## Installation

Pour installer les dépendances du projet, utilisez la commande suivante :

```bash
castor install
```

## Lancer les tests

### Tests unitaires 🧪
Avec PHPUnit
```bash
XDEBUG_MODE=coverage php bin/phpunit --testsuite=Phpunit
```
Avec Pest
```bash
XDEBUG_MODE=coverage vendor/bin/pest --testsuite=Pest
```

### Tests de mutation 👽
Avec Infection PHP (qui utilise PHPUnit)
```bash
XDEBUG_MODE=coverage tools/infection/vendor/bin/infection
```
Avec Pest
```bash
XDEBUG_MODE=coverage php vendor/bin/pest --testsuite=Pest --mutate
```

## Outils de qualité de code (PHP-CS-Fixer, PHPStan & Rector) 💎
```bash
castor lint
```

> [!NOTE]
> Ce projet est destiné à des fins de démonstration et d'apprentissage. Pour une mise en œuvre en production,
> veuillez consulter la documentation de chaque outil et adapter la configuration en fonction de vos besoins.
>

## Licence

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