正在获取PHPUnit工作-包含路径设置不正确?

正在获取PHPUnit工作-包含路径设置不正确?,php,unit-testing,phpunit,pear,Php,Unit Testing,Phpunit,Pear,我试图让PHPUnit在我的开发环境中工作,但在脚本中包含PHPUnit时遇到了一些障碍。我知道我需要在PHP上设置include路径,但是我尝试的每一个组合都失败了,编译器没有看到PHPUnit_Framework_TestCase类 我刚刚在PHP和PEAR上运行了更新,PHPUnit安装在计算机上,因为我可以通过命令行很好地访问它 PHPUnit安装在/usr/share/php/PHPUnit Pear位于/usr/share/php/Pear 有什么我遗漏的吗?这是我第一次尝试使用PH

我试图让PHPUnit在我的开发环境中工作,但在脚本中包含PHPUnit时遇到了一些障碍。我知道我需要在PHP上设置include路径,但是我尝试的每一个组合都失败了,编译器没有看到PHPUnit_Framework_TestCase类

我刚刚在PHP和PEAR上运行了更新,PHPUnit安装在计算机上,因为我可以通过命令行很好地访问它

PHPUnit安装在/usr/share/php/PHPUnit

Pear位于/usr/share/php/Pear

有什么我遗漏的吗?这是我第一次尝试使用PHPUnit,甚至是PEAR的一些东西。我在Ubuntu 10.10上。任何帮助都将不胜感激

编辑-在我的PHP ini中的包含路径中没有任何内容。现在代码只是

<?php
class Stacktest extends PHPUnit_Framework_TestCase
{

}

确保每次使用include()或require()时,在实际文件名前面加上
dirname(\uu file\uuu)
。这样可以确保要包含的文件位于相对于包含的实际文件指定的路径。通过deftault,PHP包含相对于启动程序所调用的文件的内容

将此行添加到您的
php.ini

include_path=".:/usr/share/php:/usr/share/pear:/usr/share/php/PHPunit:/usr/share/php/PEAR"
保存文件并重新启动apache


另外,请确保编辑了正确的
php.ini
。尝试使用
locate php.ini
查找它可能隐藏的所有位置。它通常位于
/usr
目录下的某个地方。

如果您正确安装了phpunit(通过PEAR),则不需要包含文件;您只需要更改使用它测试php文件的方式(例如,通过转到浏览器类型localhost来测试文件是否工作)。使用phpunit,您可以使用命令行;使用命令行给出了相同的示例(我假设它是标准的)。因此,如果安装正确,您可以执行以下操作:

  • 文件ExampleTest.php,位于localhost的根目录下(对我来说这是/var/www):

  • 打开控制台(Mac或Linux上的终端,Win上的命令提示符),导航到本地主机文档根目录(保存ExampleTest.php的地方),然后键入以下内容:

    phpunit --verbose ExampleTest.php
    
  • 你应该看到:

    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.
    

    编辑

    刚刚在你的问题中发现了Ubuntu 10.10。对于Ubuntu安装,我建议这样做:在终端中:

    sudo pear uninstall phpunit/PHPUnit
    sudo apt-get install phpunit
    sudo /etc/init.d/apache2 restart
    
    注意:如果没有通过pear安装phpunit,请不要发布第一行。似乎需要最后一行(至少在我的情况下)


    从PHPUnit 3.5开始,您必须自己包括自动加载器:

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

    我能够通过在脚本顶部使用set_include_path使其工作(参见这里的示例),然后我还必须包括,因为我正在运行Selenium测试,但它工作了

    require_once ('PHPUnit/Autoload.php');
    require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
    

    您能否提供一些关于如何在脚本中使用PHPUnit的更多信息?您到底是如何运行测试用例的?您是否在cli中使用类似于
    phpunit MyClassTest
    的东西?您是说不能包含TestCase.php吗?请通过执行echo get_include_path()执行echo get_include_path()输出以下内容来了解您的包含路径::/usr/share/php:/usr/share/pearIn尝试在浏览器中运行它正确加载TestRunner.php,但无法加载父类PHPUnit_Runner\u BaseTestRunner的文件。在浏览器中运行时,我遇到以下错误:致命错误:在第60行的/usr/share/php/PHPUnit/TextUI/TestRunner.php中找不到类“PHPUnit\u Runner\u BaseTestRunner”。首先,您是如何安装PHPUnit的?如果pear然后删除它并安装它通过apt让你谁没有任何问题,包括文件了!第二,如果出现错误,您可以要求该文件也需要一次'PHPUnit/Runner/BaseTestRunner.php';在TestRunner.php之前是必需的,但我有一个很强的问题,当您安装时出现错误,所以这可能不是您看到的最后一个错误,这就是为什么我建议使用apt get,因为您将看到舒尔的工作原理。在花费数小时试图安装PHPUnit之后,这对我来说是有效的。@PoelincaDorin,PHP5.4.17,PHPUnit 3.7.28,Ubuntu12.04~很快就会升级。因为我写了这篇文章,我通过dpkg删除了它,修改了pear配置,然后通过pear添加了它,解决了这个问题。无论如何,这是正确的解决方案-自动加载器必须明确包括在内。仍然需要确保将include路径设置为pear和phpunit。在哪里?在每个测试文件的顶部?@bseen,我不知道该如何帮助你,但这个答案很有帮助,足以让我在这种情况下继续工作。我使用的是PhpStorm 6,我可以进入Preferences(Project)>PHP>PHPUnit,并将PHPUnit库设置为“使用自定义加载程序”,然后将路径设置为项目的
    vendor/autoload.PHP
    文件。无需“定位”正确的文件。使用“php-i”获得完整配置。它包含当前加载的配置文件路径。或者在php文件中使用phpinfo()。
    php-i | grep php.ini
    grep是您的朋友,但是,如果您使用Apache中的php,您应该在浏览器中添加php|u info()并查找“php.ini”。Ubuntu文件在/etc/apache2/下,还有更多文件在
    /etc/php5/{apache2|cli|cgi}
    下。
    sudo /etc/init.d/apache2 reload # Or
    sudo service apache2 restart
    
    require 'PHPUnit/Autoload.php'; // PEAR should be in your include_path
    
    require_once ('PHPUnit/Autoload.php');
    require_once 'PHPUnit/Extensions/SeleniumTestCase.php';