PHPUnit on Server changes in PhpStorm 7

PHPUnit support in PhpStormUnit testing follows the mantra that “the same input always should generate the same output.” But what if some developers on a team have different PHP configurations, or maybe one uses Windows and the other one Mac OS X? Does that qualify as “same input”? It should, but to be sure we can run PHPUnit tests on a remote server or a Vagrant box, always running tests in the same environment. In PhpStorm 7, the PHPUnit on Server feature has been significantly reworked.

Support for PHPUnit 3.7: PHPUnit on Server now supports tests written for PHPUnit version higher than 3.3 . The IDE will automatically detect the PHPUnit version used when running tests and capture their results.

Configuration using XML: When running PHPUnit on a remote server, now it is also possible to specify an XML configuration file. This file can specify tests to be run as well as provide the test runner with additional options such as test behavior, timeouts, autoloaders and so on. See the PHPUnit documentation for more information about available options:

Configuration using XML

Disable automatic upload of tests: When automatic deployment in a project is enabled, files are uploaded on every save. Uploading tests isn’t needed in this case, as they are already there!

Automatic uploading of tests can be disabled from the Remote tab, reducing the time to upload tests to the server to zero.

Specify groups of tests to include/exclude from the test run. From the Test Groups tab, we can now select specific groups of tests we want to run or skip during the remote test run. For example, we can limit our test run to only include tests that belong to our business logic. Or maybe run only integration tests:

Specify groups of tests to include/exclude from the test run

Want to add a test to a group? Tests can be tagged as belonging to one or more groups using the @group annotation:

Add tests to group

Are you running unit tests on a server? Let us hear your thoughts in the issue tracker, through the comments below or in our forums!

Develop with pleasure!
– JetBrains PhpStorm Team

This entry was posted in Cool Feature and tagged , , , . Bookmark the permalink.
  • Seth Thornberry

    Does this change include changes to how unit tests are executed on the remote servers? I’m a little fuzzy on the exact process used, but I believe that currently it uploads a test runner script and attempts to start it via a http request .. This has never really worked for my projects as they rarely have the tests accessible from web calls.

    Are there any plans to execute the CLI test runner via ssh and capture that output?

    • Seth Thornberry

      Alternatively, is there any way to support running unit tests on the remote server and specifying an include path? Our PHPUnit is installed inside our project, not on a shared config path.

      • Svetlana Zemlyanskaya

        We have plans to implement running PHPUnit via SSH, feel free to vote:

        For PHPUnit on Server run configuration you can specify custom runner options (“Test Runner options”).

    • Zdenek Machek

      This is exactly what I am thinking. Does it even make sense to run PHPUnit tests on webserver?
      Or do you need special webserver configuration for it?
      Can you provide sample webserver configuration?

  • Catalin

    Is there any way I can run a test over current file?
    I have setup the phpunit for the entire library I created, but sometimes I need to run the thes only from the current file.