Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Web interface" to PHPUnit tests?

Is there a simple "Web interface" to running PHPUnit test suites? i.e. a PHP script that runs the test on the command line, and outputs a nicely formatted HTML result.

I develop web applications, and the day-to-day workflow usually switches between the IDE and the browser. I would like to have the unit testing in the same environment.

I'm looking for something really simple and PHP based - I am planning to get into phpUnderControl (which has the functionality I'm looking for) but not yet.

like image 456
Pekka Avatar asked Mar 11 '10 11:03

Pekka


People also ask

How do I run a PHPUnit test?

How to Run Tests in PHPUnit. You can run all the tests in a directory using the PHPUnit binary installed in your vendor folder. You can also run a single test by providing the path to the test file. You use the --verbose flag to get more information on the test status.

What is a PHPUnit test?

PHPUnit is a unit testing framework for the PHP programming language. It is an instance of the xUnit design for unit testing systems that began with SUnit and became popular with JUnit. Even a small software development project usually takes hours of hard work.


10 Answers

I recently discovered Visual PHPUnit which looks like a very very nice interface for everyone that doesn't want to run PHPUnit from the command line:

Visual PHPUnit

It seems to be the next iteration of @Matt's PHPUnit Test Report

like image 169
edorian Avatar answered Oct 02 '22 14:10

edorian


I feel your frustration - I'm a UI guy myself. Looking at the terminal too long makes my head spin. I wrote a quick little application that you might find helpful.

PHPUnit test application
(source: mattmueller.me)

You can find it here: http://mattmueller.me/blog/introducing-phpunit-test-report

Cheers! Matt

like image 20
Matt Avatar answered Oct 01 '22 14:10

Matt


After several hours of researching recently, the best PHPUnit web frontend I have come across was https://github.com/NSinopoli/VisualPHPUnit

like image 39
Motin Avatar answered Oct 01 '22 14:10

Motin


You can use phing to run a PHPUnitTask and then convert the output with:

  • PHPUnitReport - This task transforms PHPUnit xml reports to HTML using XSLT.

Example:

<phpunitreport infile="reports/testsuites.xml" 
    format="frames" 
    todir="reports/tests" 
    styledir="/home/phing/etc"/>

See phpunit --help for the various output formats.

The 2.3 version of PHPUnit had a chapter on this, but it is gone for some time now. You might be able to find an old copy with Google somewhere.

Since you mention this is for phpUnderControl: if you are not fixed on that, consider using Jenkins and http://jenkins-php.org.

On a side note: unless we are talking CI servers, most people I know don't use PHPUnit through a web interface. They either just use the command line or their IDE integration.

like image 34
Gordon Avatar answered Sep 29 '22 14:09

Gordon


You can use Jenkins to run any kind of tasks including PHPUnit tests. It can automatically checkout your app, run the tests, build a HTML report and even email you if the build fails.

Here's the templates you need to setup Jenkins to build a bunch of interesting reports and stats from your project.

like image 23
Tom Avatar answered Sep 28 '22 14:09

Tom


If you don't care about reformatting the output and just want to run PHPUnit from a web page, you can do so with some PHP code like this:

<pre>
<?php 
$argv[0] = "phpunit.phar";
$argv[1] = '--bootstrap';
$argv[2] = 'src/load.php';
$argv[3] = "tests/MoneyTest";
$_SERVER['argv'] = $argv;
include 'phpunit.phar';
?>
</pre>

The file src/load.php is just a bunch of includes to include the classes. The output then looks like this:

#!/usr/bin/env php
PHPUnit 4.1.2 by Sebastian Bergmann.

........................

Time: 122 ms, Memory: 3.25Mb

OK (24 tests, 43 assertions)

Just ignore that first line and you can see the results.

I'm shocked that PHPUnit does not include a basic way to do this. Some classes may be dependent on the web server. Do we just not test those? Some sites have you upload your files and don't allow command line executions.

like image 42
Charles Avatar answered Oct 02 '22 14:10

Charles


I've never seen such a web-interface... But, as you say you are always using your IDE and your webbrowser, why not think the other way ?

i.e. a possible solution would be to launch the unittests from your IDE ;-)
Which means you should be able to click on the failing tests to "jump" to either the test method, or the reason that caused the test to fail, for instance.


In the PHP + PHPUnit world, I know that Zend Studio does that -- yes, it's not free, unfortunatly ;-(


Using Eclipse PDT, a solution would be to register PHPUnit as an external tool (see or instance this blogpost : Using PHPUnit with Eclipse PDT) -- but it's quite not sexy, and you cannot click on the results to jump the the methods/tests...

Another solution would be to develop a plugin to integrate PHPUnit into Eclipse PDT (like it's been done for Zend Studio, I suppose) -- A phpunit4eclipse was created some time ago, but it's just a start, and didn't get much succes, so the author didn't work on it after releasing that...

like image 21
Pascal MARTIN Avatar answered Oct 02 '22 14:10

Pascal MARTIN


I found this:

I stumbeld upon a post from Parth Patil, whose solution was to create an xml-report from PHPUnit and then use this xml to create your own report.

I used his solution, made it PHPUnit 3.4 compatible and also added some Reflection to see my testcase doc-comments in the report. (Note: For the refelection i use the Zend_Framework reflection class)

like image 44
Pekka Avatar answered Sep 30 '22 14:09

Pekka


Ok you said you'd prefer an independent IDE solution, but just so you know there is a recent plugin that enables executing PHPUnit simply into Eclipse, and having a nice representation (like in Zend Studio, but for free).

Here is the link, the main developper replies fast to emails too if you have a problem :

http://www.phpsrc.org/wiki/

I personnaly tested some web interface, but I have always been deceived (not really practital and stable). But this is your choice.

like image 24
Matthieu Napoli Avatar answered Sep 28 '22 14:09

Matthieu Napoli


jframework also has a nice UI for PHPUnit. It breaks the results, and shows test coverage on all files and each file separately. It works on both web and cli, with the cli one having the benefit of dumping every test after its done (the web-based one has to wait until everything is over).

General web output, with code coverage per file

Code coverage report for a single file

like image 34
AbiusX Avatar answered Oct 01 '22 14:10

AbiusX