正在获取PHPUnit工作-包含路径设置不正确?
我试图让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中的包含路径中没有任何内容。现在代码只是正在获取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
<?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';