Setup PHPunit for testing Zend Framework application

Hold on Cowboy

This blog post is pretty old. Be careful with the information you find in here. It's likely dead, dying, or wildly inaccurate.

This was how I set up PHPUnit with my Zend Framework application. I’m very new to testing and have never set it up before.

  1. Need to get PHPunit installed on the Apple Mac Try typing this in the command line (btw I prefer iTerm over the built in terminal). whereis phpunit

I tried a few different ways to install php, I’m not sure which one eventually installed it, but…. yeah I know sounds dumb, but when you try a bunch of different ways and then it ‘just starts working’ you lose track which way actually fixed it. Besides it was two weeks ago, I can’t remember that far back. I do know that one of the has Xdebug turned on to generate the nice reports of code coverage.

For example. ` Shane:tests shane$ whereis phpunit /usr/bin/phpunit Shane:tests shane$ phpunit –version PHPUnit 3.4.6 by Sebastian Bergmann.

Shane:tests shane$ `

  1. Now setup your environment. This is the hard part, since everyone does it different. The trouble is figuring out which pieces need to go where and why.

Bonus This will create a neat little tree of your folder structure ls -R | grep ":$" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'

So I have this structure for my application |-application |---configs |---controllers |---models |-----DbTable |---views |-----helpers |-----scripts |-------error |-------index |-library |-public |-tests |---application |-----controllers |-----models |---library |---log |-----report

Notice the “test” folder with subfolders? Good.

We now have the necessary folder, here are files

tests/phpunit.xml ` ./

        <directory suffix=".php">../library/</directory>
        <directory suffix=".php">../application/</directory>
            <directory suffix=".phtml">../application/</directory>
    <log type="coverage-html" target="./log/report" charset="UTF-8"
        yui="true" highlight="true"
        lowUpperBound="50" highLowerBound="80"/>
    <log type="testdox-html" target="./log/testdox.html" />


Did this help you out? It took me a few days to piece together all this information together, I hope this saves you some time (who knows, maybe the future me will be thankful I wrote this down). Let me know your thoughts.