From what I've read, it seems like I should be able to set up a folder, e.g. tests/ , put a few files in it with unit test classes, and then run phpunit on that file and have it find and run the tests.
For whatever reason, in my installation (on OS X), it thinks the folder tests/ is a file, or so it would seem:
$ ls tests test1.php test2.php $ phpunit tests/test1.php PHPUnit 3.5.3 by Sebastian Bergmann. F Time: 0 seconds, Memory: 5.00Mb There was 1 failure: 1) FailingTest::testFail Your test successfully failed! /Users/****/tmp/tests/test1.php:4 FAILURES! Tests: 1, Assertions: 0, Failures: 1. $ phpunit tests/test2.php PHPUnit 3.5.3 by Sebastian Bergmann. . Time: 0 seconds, Memory: 5.00Mb OK (1 test, 1 assertion) $ phpunit tests PHP Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Neither "tests.php" nor "tests.php" could be opened.' in /usr/local/PEAR/PHPUnit/Util/Skeleton/Test.php:102 Stack trace: #0 /usr/local/PEAR/PHPUnit/TextUI/Command.php(157): PHPUnit_Util_Skeleton_Test->__construct('tests', '') #1 /usr/local/PEAR/PHPUnit/TextUI/Command.php(129): PHPUnit_TextUI_Command->run(Array, true) #2 /usr/local/bin/phpunit(53): PHPUnit_TextUI_Command::main() #3 {main} thrown in /usr/local/PEAR/PHPUnit/Util/Skeleton/Test.php on line 102 Fatal error: Uncaught exception 'PHPUnit_Framework_Exception' with message 'Neither "tests.php" nor "tests.php" could be opened.' in /usr/local/PEAR/PHPUnit/Util/Skeleton/Test.php:102 Stack trace: #0 /usr/local/PEAR/PHPUnit/TextUI/Command.php(157): PHPUnit_Util_Skeleton_Test->__construct('tests', '') #1 /usr/local/PEAR/PHPUnit/TextUI/Command.php(129): PHPUnit_TextUI_Command->run(Array, true) #2 /usr/local/bin/phpunit(53): PHPUnit_TextUI_Command::main() #3 {main} thrown in /usr/local/PEAR/PHPUnit/Util/Skeleton/Test.php on line 102
I have what I hope is a fairly standard installation of phpunit via PEAR, following these instructions http://www.newmediacampaigns.com/page/install-pear-phpunit-xdebug-on-macosx-snow-leopard, on OS X Snow Leopard.
$ pear version PEAR Version: 1.9.1 PHP Version: 5.3.2 Zend Engine Version: 2.3.0 Running on: **** 10.4.0 Darwin Kernel Version 10.4.0: Fri Apr 23 18:28:53 PDT 2010; root:xnu-1504.7.4~1/RELEASE_I386 i386 $ phpunit --version PHPUnit 3.5.3 by Sebastian Bergmann.
I'm hoping someone else out there ran into this issue and it's just a simple fix, or else I'm just doing something wrong?
The <phpunit> Element.
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.
It is not a bug, it is a feature.
You have a directory full of .php files, in your case they all contain testcases.
But as your testsuite grows, you will likely want to have other php files inside tests directory, files that do not contains tests, that exist solely to support tests. Those files should never be executed by PHPUnit itself.
This is a very common scenario.
So how would PHPUnit know which files it needs to run and which ones not? Checking the file name suffix is one option for doing it - by default PHPUnit considers everything with name ending with Test.php
as being a test and ignores everything else.
You can change that behaviour if you really want to - by creating a file named phpunit.xml in your tests directory with the following content
<?xml version="1.0" encoding="utf-8" ?> <phpunit> <testsuite name='Name your suite'> <directory suffix='.php'>./</directory> </testsuite> </phpunit>
Once you have done that, PHPUnit will run all files with '.php' at the end of the file name (in this context file extension is considered to be part of the file name)
But it really is better to get used to the convention and name your tests accordingly.
The simpler way to running test on folder is to add "Test.php" at the end all of your tests and run phpunit specifing your folder like this
phpunit .
or
phpunit your_test_folder/.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With