【问题标题】:PHPUnit Setup and PHP directory issuesPHPUnit 设置和 PHP 目录问题
【发布时间】:2011-03-10 23:13:22
【问题描述】:

我知道这可能会被问到很多问题,但我已经很长时间没有使用 PHP 并且我发现自己再次与它的路径行为和包含问题搏斗。

我已经按照建议通过 Pear 安装了 PHPUnit,我将 Pear 目录添加到了我的 php.ini 文件中,这样我就可以全局包含 PHPUnit.php。但是,PHPUnit.php 需要在它自己的目录中包含几个文件,当我在我的测试目录中引用 PHPUnit.php 时:

require_once 'PHPUnit.php';

它尝试包含那些相对于测试目录或 php.ini 中指定的 Pear 目录的文件。

Fatal error: require_once() [function.require]: Failed opening required 'PHPUnit/TestCase.php'
(include_path='.:/home/data/pear/php') in /[snip]/domains/test.domainname.com/html/project/tests/PHPUnit.php on line 47

我记得以前用 PHP 处理过这些问题,但我觉得我不应该修改 PHPUnit 包含文件的路径来完成这项工作...

【问题讨论】:

  • 不知道这是否重要,但PHPUnit_TestCase 适用于 PHPUnit 1.x(或其他东西,至少 PHPUnit_Framework_TestCase。
  • 并且无论如何你都不应该“需要'PHPUnit.php'。这将为你完成。只是为了确保:你做了'pear install phpunit/PHPUnit'(版本3.5.x)和不仅仅是'pear install phpunit',因为那是一个非常旧的版本:)
  • 你知道,我刚刚意识到我一直在查看 Pear 网站上的文档,这些文档已经过时了,难怪这给我带来了麻烦,似乎在自从我上次使用它以来!

标签: php unit-testing path phpunit


【解决方案1】:

PHPUnit 使用典型的类名到路径转换自动加载器,将类名中的下划线替换为目录分隔符。

因此,在您的代码中,您引用了 PHPUnit_TestCase,它自动尝试在 PHPUnit 目录中包含 TestCase.php 文件,但是该文件/类不存在。

正如 KingCrunch 在评论中所说,要使用的类是 PHPUnit_Framework_TestCase

如果你查看你的 PHPUnit 目录,有一个包含 TestCase.php 的 Framework 目录

Writing Tests for PHPUnit

<?php
class StackTest extends PHPUnit_Framework_TestCase
{

【讨论】:

  • 雅各布,你说得对。我已经安装了最新版本,但一直在尝试像旧版本一样使用它。感谢您将其标记为答案,因为它提供了有关当前版本使用方式的良好、简洁的概述。谢谢!
猜你喜欢
  • 2016-04-23
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
  • 1970-01-01
  • 2020-03-13
  • 1970-01-01
  • 2017-03-15
相关资源
最近更新 更多