I am trying to run unit test in PhpStorm with codecoverage.
It throws me a error msg saying interpreter is missing. How to install the interpreter!
Also how to configure in order to run my tests with code coverage.
Steps to do:
1. Set interpreter and language level.
File -> Settings -> Languages & Frameworks -> PHP
Select your PHP version. Then click button with ... (three dotes), then add interpreter.
https://www.jetbrains.com/phpstorm/help/interpreters.html
2. Add PHPUnit to project.
File -> Settings -> Languages & Frameworks -> PHPUnit
a) Load form include path
To add this you must set where PHPUnit library is installed. Then add using External Libraries in Project.
To specify path use green + button.
b) Use custom autoloader
Use this option when you install PHPUnit via composer. In Path to script field specify autoload file.
https://www.jetbrains.com/phpstorm/help/phpunit.html
3. Configure tests
In the top right corner use Select Run/Debug Configuration menu
And click Edit Configurations. Select green + button to add PHPUnit.
Define name of the configuration and directory with tests. Additionally you can add some PHPUnit arguments in Test Runner options field.
https://www.jetbrains.com/phpstorm/help/run-debug-configuration-phpunit.html
Annotation 1 - Configure bootstrap
Tests sometimes needs to use a bootstrap file which set environments, loads configs etc. To set this file go to:
File -> Settings -> Languages & Frameworks -> PHPUnit
and select the bootstrap file in Default bootstrap file field.
https://www.jetbrains.com/phpstorm/help/phpunit.html - in Bootstrap file section.
Annotation 2 - Run tests with code coverage
To run with coverage you must install Xdebug PHP extension. You should read the Xdebug installation guide.
After this actions use a icon
to run with coverage.
https://www.jetbrains.com/phpstorm/help/code-coverage.html
Related
I have installed the phalcon in windows by adding phalcon_dll to xampp/php/ext and added extension in php.ini file now when i checked whether it installed or not i did <?php phpinfo(); ?> then i can able to see that it is installed..
Now i want to create a new skelton application through cmd when i type phalcon it should show the components as per documentation but its sayin this:
C:\Users\Amerytrech-Waheed>phalcon
'phalcon' is not recognized as an internal or external command,
operable program or batch file.
im tryig do like this: https://www.tutorialspoint.com/phalcon/phalcon_environmental_setup.htm
but little confused what are all need to add in system variables.?
and what is the alternate solution to create skelton?
Step 5 in the very document you pasted states:
After downloading the package, set the path variable in the system properties
it then explicitly shows you an image that shows the path to add, separated by a semicolon.
;C:\phalcon-devtools-master
So if you are unclear on where to set this.
Right click Computer -> Properties -> Advanced -> Environment Variables -> Path then add the path mentioned above to the very end of the path string.
I've installed the symfony plugin to PHPstorm, but when I'm trying to run the project I get the following error
Fatal error: Class 'Doctrine\Tests\Common\Cache\CacheTest' not found in ...
I've checked the path and CacheTest file is in the correct folder. When I run the symfony project from the command line it works just fine.
Is there someway to fix this problem?
What you try is not correct. You execute the php.exe and that is the normal PHP executable. To run your Unit-Tests you need PHPUnit to run.
Go to Preferences -> Languages & Frameworks -> PHP -> PHPUnit and define the phpunit.phar.
When you've done that you create a new configuration to run PHPUnit and you define the configuration which is under app/phpunit.xml.
I figured it out. First of all you need add phpunit.phar as Stony explained in his answer.
After that all I really needed to do was to rename phpunit.xml.dist to phpunit.xml in app/ folder and then just right click it and choose the Run 'phpunit.xml' option. This way the Tests succeed and it doesn't give any errors.
As for running the symfony project you need to add symfony command line tool support to phpstorm. All about that in this link: https://confluence.jetbrains.com/display/PhpStorm/Symfony2+Command+Line+Tool+Integration+-+Symfony+Development+using+PhpStorm
After that you just run it as a command like you would with normal command line. That's also explained in the link.
Try to choose "Use custom autoloader" option in Preferences -> Languages & Frameworks -> PHP -> PHPUnit and specify the path to vendor/autoload.php file.
I use Symfony2 BehatBundle, version=v1.0.0 and I want to change the name of the main feature context file. Now when I run the behat using command:
app/console --env=test behat #NameOfMyBundle
file src/NameOfMyBundle/Features/Context/FeatureContext.php is used
I want to use custom main feature file, for example src/NameOfMyBundle/Features/Context/MyCustomContext.php but I don't know how. According to the behat documentation:
By convention, the context class should be called FeatureContext, but this could be easily changed through the cli configuration.
However, this configuration option is nowhere to be found. I tried something like:
app/console --env=test behat #NameOfMyBundle --context "MyCustomContext"
but it fails.
Does anyone know how to change this main feature context file (preferably, using cli)?
Thanks!
The context class can be changed in the configuration file: http://docs.behat.org/guides/7.config.html#context
Environment variables can be used as well: http://docs.behat.org/guides/7.config.html#environment-variable
The bundle is no longer maintained. Use the extension instead: http://docs.behat.org/en/latest/cookbooks/1.symfony2_integration.html#installing-and-enabling-symfony2-extension
The Yii2 preview was recently released and is available on github. I want to take it for a test drive, but the "documentation" so far gets outdated almost instantly since it is still under heavy development. I have tried to follow this guide on creating a simple CRUD app with Yii2, but it fails at the step:
php yiic.php app/create /var/www/yii2
With the error:
Could not open input file: yiic.php
Indicating that there is no file called yiic.php. The only folder within the framework folder is yii (framework/yii), and within that folder there is no file yiic.php, only Yii.php which when called in the command line gives the command list:
The following commands are available:
- asset
- cache
- help
- message
- migrate
Anyone managed to successfully setup a Yii2 app? Care to share how you got it done?
Seems like yiic has been removed for now, there are alternatives though, so read on.
It's all in the early stages, so the following method could break in the coming days/weeks/months. Therefore use with caution.
There are 2 ways to do this now:
Use composer. (I recommend this option.)
Directly copy the contents of yii2/apps/ directory to your apps directory, depending on the type of app you want to try.
There are currently 2 options for type of app - advanced, and basic. Both are in their respective directories within the yii2/apps/ directory, i.e yii2/apps/advanced and yii2/apps/basic.
For basic go through the basic readme.md, and for advanced go through the advanced readme.md.
The directions for using composer are given in the respective readme.md files. Including them here for completeness:
Basic app:
Install composer, if you don't have it.
Use composer to install the app alongwith dependencies(Yii):
php path/to/composer.phar create-project --stability=dev yiisoft/yii2-app-basic my_yii2_trial
Access app from http://localhost/my_yii2_trial/www
Advanced app:
Install composer, if you don't have it.
Use composer to install the app alongwith dependencies(Yii):
php path/to/composer.phar create-project --stability=dev yiisoft/yii2-app-advanced my_yii2_trial
According to readme, after step 2 app should be accessible, but composer was failing(see issue 439). With schmunk's tip, ran the install or install.bat command that gets copied by composer: ./install . Selected development environment (by entering choice 0 in the instructions that show up when running install command). Update: The command has been renamed to init, composer doesn't fail anymore, with fix from Qiang (check the issue 439 for more details).
Access app at: http://localhost/my_yii2_trial/frontend/www or http://localhost/my_yii2_trial/backstage/www
Here's how to copy the directory and get it working:
Basic app:
create your web-accessible directory for the app : my_yii2_trial
copy all files and folders from yii2/apps/basic/ directory to my_yii2_trial/ directory.
modify the my_yii2_trial/www/index.php file to point to the correct path for Yii.php.
For me it was within yii2/framework/yii/
comment the line that tries to include ../vendor/autoload.php file, I couldn't find that file anywhere, so its probably for some future use. it is the autoloader provided by composer.
Access from browser : http://localhost/my_yii2_trial/www
Advanced app:
create your web-accessible directory for the app : my_yii2_trial
copy all files and folders from yii2/apps/advanced/ directory to my_yii2_trial/ directory.
modify the my_yii2_trial/frontend/www/index.php file to point to the correct path for Yii.php. Similarly modify backstage/www/index.php.
comment the line that tries to include ../vendor/autoload.php file in both the index.php of backstage and frontend.
Access app at: http://localhost/my_yii2_trial/frontend/www or http://localhost/my_yii2_trial/backstage/www
Some important links to read more about this: issue 77, issue 108, issue 131, and wiki comment.
I am not sure how composer's autoloader is being used, so can't comment on that. Also in future versions, backstage might be renamed to backend.
I have set up PhpStorm 5 with PHPUnit, and I'm curious if PhpStorm might have some functionality that will automatically run a unit test when saving a file. Like watchr and guard. I have tried search our beloved www and the PhpStorm docs, but haven't been able to find a solution for it.
As of version 6, PHPStorm has "File Watchers"
Open your project preferences.
Select File Watchers from the left hand list of options.
Click the + symbol at the bottom of the empty right hand panel.
Select <custom>
You will have to set up a command line for PHPUnit, it wont be the integrated testing, but you can have errors output to the console (which is good a good start!)
Various macro options are available to you, so you can include (for example) $FileNameWithoutExtension$Test.php in the arguments passed to your command line.
I personally had to set up two watchers. The first detected modifications to project files, and the second detected changes to test files (the second did not append Test.php to the filename) I also created a new project scope to exclude the tests directories from the first watcher.
You may also want to turn off immediate synchronisation, as this causes PHPUnit to run when PHPStorm auto-saves files.
My other settings are like:
File Type: PHP files (PHP)
Scope: Project excluding tests
Program: /path/to/php
Arguments: /path/to/phpunit --configuration /path/to/phpunit.xml.dist /path/to/tests/$FileNameWithoutExtension$Test.php
Working directory: $FileDir$
Output paths: $FileDir$
No output filters set, syntax error checks enabled, and console showing errors.
PHPUnit watcher named as hot phpunit runner
https://github.com/slavahatnuke/hot-phpunit-runner
You can also have a look at TDDRunner
It is console tool that execute PHPUnit autmaticly on file changes. You can also configure PHPUnit by excuting only one file ot whatever.
/usr/bin/tddrunner --group=test
There's a a German article providing further detail.
In 2017 Jetbrains release a feature that allow auto-run for tests.
It's located in the Run console, therefore it's linked to the run settings, easing the setup of this autorun.
See https://blog.jetbrains.com/phpstorm/2017/07/autorun-phpunit-tests-in-phpstorm-2017-2/