Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

'Class not found' when using namespaces in PHPUnit

Tags:

I'm new to PHPUnit and am having some trouble setting it up to access my PHP files. The directory structure I'm using for my app is this:

./phpunit.xml  ./lib/Application/   -> Dir1/File1.php (namespace = Application\Dir1)   -> Dir1/File2.php   -> Dir2/File1.php (namespace = Application\Dir2)  ./tests/Application/Tests   -> Test1.php (namespace = Application\Tests)   -> Test2.php  

In my PhpUnit.xml, I have:

<?xml version="1.0" encoding="UTF-8"?> <phpunit verbose="false">   <testsuites>       <testsuite name="Application">           <directory>./tests/Application/Tests</directory>       </testsuite>   </testsuites>   <logging>        <log type="coverage-text" target="php://stdout" showUncoveredFiles="false"/>        <log type="json" target="/tmp/phpunit-logfile.json"/>   </logging>   <filter>         <whitelist>             <directory suffix=".php">./lib</directory>         </whitelist>   </filter> </phpunit> 

And in one of my test files, I open with:

namespace Application\Tests;  use Application\Dir1\File1;  class MyTest extends File1 {} 

But it keeps on saying:

Class 'Application\Dir1\File1' not found

Where am I going wrong?

like image 894
hohner Avatar asked Mar 30 '13 13:03

hohner


People also ask

How do I start PHPUnit?

PHPUnit InstallationThe first command creates a folder in your current directory, test-project and the second command moves into it. The last command starts an interactive shell. Follow the prompt, filling in the details as required (the default values are fine).

What is PHPUnit testing?

PHPUnit is a unit testing framework for the PHP programming language. It is an instance of the xUnit architecture for unit testing frameworks that originated with SUnit and became popular with JUnit. PHPUnit was created by Sebastian Bergmann and its development is hosted on GitHub.


1 Answers

If you installed PHPUnit using Composer then you can use Composers autoloader. The easiest way to do so would be to add:

"autoload":{     "psr-0":{         "your-app-directory":""     } } 

to composer.json

like image 124
JohnnyFaldo Avatar answered Oct 14 '22 12:10

JohnnyFaldo