Download the PHP package detain/test-generator without Composer
On this page you can find all versions of the php package detain/test-generator. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download detain/test-generator
More information about detain/test-generator
Files in detain/test-generator
Package test-generator
Short Description Generate test cases for existing files
License MIT
Homepage https://github.com/mihaeu/php-test-generator
Informations about the package test-generator
Generate test cases for existing files
Use Cases
- PHPStorm has Apache Velocity support for file templates, but it is annoying to work with and limited
- other IDEs or editors like Vim or Emacs don't have built-in code generation
- somehow the test files never end up where they belong forcing you to rearrange code manually
test-generator
saves you all the tedious work of typing repetitive code when testing legacy applications. Next time you write a test for a class with too many dependencies and you start mocking away think of how much time you could've saved if you could automate this.
This is where test-generator
comes into play. Try it out, configure everything to your needs and create an alias for your shell or even better include it as an external tool in your editor/IDE (like PHPStorm).
Usage
CLI
PHPStorm
I recommend integrating test-generator
as an external tool in PHPStorm. This works, because PHPStorm can pass the
filename of the currently active file as an argument to test-generator
, which will then generate and write the
test to your preconfigured location.
Navigate to Settings > Tools > External Tools and klick on +. Add the following information:
Field | Value |
---|---|
Name | test-generator |
Description | Generate Test Stubs |
Program | $PhpExecutable |
Arguments | vendor/bin/test-generator $FilePath$ -s base=src -t tests/unit |
Working directory | $ProjectFileDir$ |
Remember to adjust Program and Arguments in case you are using the .phar
file.
In case you want to generate different tests with different settings and locations, simply create more external tool entries.
Pro Tip: Assign a shortcut to this tool, because you might end up using it a lot ;)
Installation
Composer (PHP 7.1+)
Phar (PHP 5.5+)
Since I actually need to use this on 5.5 legacy projects (should work with 5.4 as well, but didn't test for it), I also release a phar file which works for older versions:
Please note that by doing this we should be disgusted at ourselves for not upgrading to PHP 7.1 (soon 7.2).
Git
If you don't have PHP 7.1 installed you can run bin/remove-php7-features
to convert the source files. I won't however except pull requests without PHP 7.1 support.
Example
Given a PHP file like:
Running the following command:
will produce a test including mocked dependencies:
Roadmap
- avoid FQNs by default by including (
use
) all required namespaces --template=<path>
for custom templates- and many more features are planned, just check out the functional backlog
Contributing
If you have any ideas for new features or are willing to contribute yourself you are more than welcome to do so.
Make sure to keep the code coverage at 100% (and run humbug for mutation testing) and stick to PSR-2. The Makefile
in the repo is making lots of assumptions and probably won't work on your machine, but it might help.
LICENSE
Copyright (c) 2017-2019 Michael Haeuslmann
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
All versions of test-generator with dependencies
nikic/php-parser Version ^3.0
docopt/docopt Version ^1.0
twig/twig Version ^1.0