wachterjohannes / test-generator

A CLI tool which generates unit tests.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

PHP Test Generator

This project make usages of PHPStan and PHPParser to generate test cases for a given PHP File.

Why?

With static code analyzer it is possible to generate tests which where mostly forgotten. The target of the project is not to generate a whole test cases instead it should generate the most boilerplate code of the test case and tell which method for the class methods should be implemented.

So example if we have a method like the following:

public function setTitle(?string $title): void
{
    $this->title = $title;
}

public function getTitle(): void
{
    $this->title = $title;
}

If you are using code coverage you will get 100% when you are testing:

public function testSetTitle(): void
{
    $model = $this->createInstance();
    $model->setTitle('Test');
    $this->assertSame('Test', $model->getTitle());
}

But as ?string can be seen as an union type of string|null the testcase for null type is missing:

public function testSetTitleNull(): void
{
    $model = $this->createInstance();
    $model->setTitle(null);
    $this->assertNull($model->getTitle());
}

The project target is to already generate also the boilerplate for that test case.

Installation

composer require --dev schranz/test-generator

Config

Create a new tests/generator-config.php file:

<?php

use Schranz\TestGenerator\Domain\Model\Config;

$config = new Config();
$config->hooks[] = 'vendor/bin/php-cs-fixer fix %s';

return $config;

See Config.php for all options.

Usage

vendor/bin/test-generator src/YourNameSpace/YourFile.php

About

A CLI tool which generates unit tests.


Languages

Language:PHP 100.0%