Getting PHPUnit Working - Include Path not set correctly?

五迷三道 提交于 2019-11-28 05:24:48
Poelinca Dorin

If you installed phpunit correctly (through PEAR), then there is no need for an include file; you just need to change the way you use it to test php files (e.g. you use it to test if the file worked by going to the browser type localhost). With phpunit you can use the command line; chapter 5 gives the same example using the command line (I would assume it's a standard). So if you got it installed correctly you can do this:

  1. File ExampleTest.php, located at the root of localhost (for me this is /var/www):

    class ExampleTest extends PHPUnit_Framework_TestCase
    {
        public function testOne()
        {
            $this->assertTrue(FALSE);
        }
    }
    
  2. Open a console (terminal on Mac or Linux, command prompt on Win), navigate to your localhost document root (where you saved ExampleTest.php) and type the following:

    phpunit --verbose ExampleTest.php
    
  3. You should see:

    PHPUnit 3.4.13 by Sebastian Bergmann.
    
    F
    
    Time: 1 second, Memory: 6.50Mb
    
    There was 1 failure:
    
    1) ExampleTest::testOne
    Failed asserting that <boolean:false> is true.
    
    /var/www/ExampleTest.php:6
    
    FAILURES!
    Tests: 1, Assertions: 1, Failures: 1.
    

Notes: All the above assumes you installed phpunit correctly (as stated in chapter 3) and you restarted apache after that .

if you really want to run tests in your browser use the following code

# error reporting
ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);

# include TestRunner
require_once 'PHPUnit/TextUI/TestRunner.php';

# our test class
class ExampleTest extends PHPUnit_Framework_TestCase
{
    public function testOne()
    {
        $this->assertTrue(FALSE);
    }
}

# run the test
$suite = new PHPUnit_Framework_TestSuite('ExampleTest');
PHPUnit_TextUI_TestRunner::run($suite);

Edit

Just spotted Ubuntu 10.10 in your question. For Ubuntu install I recommend this: in terminal do:

sudo pear uninstall phpunit/PHPUnit
sudo apt-get install phpunit
sudo /etc/init.d/apache2 restart

Note: Don't issue the first line if you didn't install phpunit through pear. The last line seems to be needed (in my case at least).

sudo /etc/init.d/apache2 reload # Or
sudo service apache2 restart

As of PHPUnit 3.5, you have to include the autoloader yourself:

require 'PHPUnit/Autoload.php'; // PEAR should be in your include_path
Jeff Davis

Add this line to your php.ini :

include_path=".:/usr/share/php:/usr/share/pear:/usr/share/php/PHPunit:/usr/share/php/PEAR"

Save the file and restart apache.

Also, make sure you editing the correct php.ini. Try using locate php.ini to find all the places it might be hiding. It's usually under the /usr directory somewhere.

Make sure every time to use include() or require(), you prefix the actual file name with dirname(__FILE__). This ensures that the file you are including is at the path you specify relative to the actual file that the include is in. By deftault, PHP includes relative to the file that is invoked to start the program.

I was able to get it working by using set_include_path at the top of my script (see example here http://www.siteconsortium.com/h/p1.php?id=php002), and then I also had to include since I was running a Selenium test, but it worked.

require_once ('PHPUnit/Autoload.php');
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!