13

Using phpunit and I am having some trouble with include paths, not for phpunit itself, but for my code and tests directory.

I have the following code structure:

Application
  -StringCalculator.php

tests
  -StringCalculatorTest.php

Inside my StringCalculatorTest.php i have a require statement:

require_once('../StringCalculator.php');

Running phpunit StringCalculatorTest.php from inside the tests folder works perfectly.

However, when i then introduce a phpunit.xml configuration file in the root directory i.e.

Application
  -StringCalculator.php

tests
  -StringCalculatorTest.php

phpunit.xml

the include path is screwed. I have to replace the require_once to

require_once('StringCalculator.php');

What is the correct way to set include paths between the application and the test directory?

3 Answers 3

11

The best place to set your PHP include path is in your bootstrap file. Usually, your phpunit.xml file will include a bootstrap attribute:

<phpunit backupGlobals="true"
     backupStaticAttributes="false"
     bootstrap="bootstrap.php"
     cacheTokens="true"
     colors="true"
     ... and so on ...
</phpunit>

Then in your bootstrap file you can set include paths, include important files, etc..

set_include_path(get_include_path() . PATH_SEPARATOR . '../my/sources');

The config file is covered in Appendix C of the PHPunit docs.

EDIT: Link updated

Sign up to request clarification or add additional context in comments.

Comments

9

I know the question already been answer
This answer is for future visitor

According to phpunit documentation, u can use includePath directive in your phpunit.xml for your inclusion path

<php>
  <includePath>/path/to/ur/project</includePath>
</php>

Comments

3

First, I don't get how require_once('../StringCalculator.php'); works, it should rather be: require_once('../Application/StringCalculator.php');.

Then, slashingweapon answer is good and it's the best IMO, however if you don't want that much trouble, you can specify your require_once to start from the directory of the current file:

require_once(__DIR__ . '../Application/StringCalculator.php');

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.