【发布时间】:2012-01-30 13:13:48
【问题描述】:
我真的希望这不是重复的,但我开始了:
我使用 Zend 的自动加载器来加载类。它似乎有效,至少它在实例化我的类(Common_TestTest)时加载了正确的文件,该类在 Common/TestTest.php 中实现。但随后我收到以下错误消息:
“在 Common/TestTest.php 中找不到类 Common_TestTest。”
TestTest.php 中除了类之外什么都没有:
<?php
class Common_TestTest extends PHPUnit_Framework_TestCase
{
public function testTesting() {
$this->assertTrue(true);
$this->assertFalse(true);
}
}
我尝试在文件末尾转储get_declared_classes,一切看起来都很好,Common_TestTest 是声明的类之一 - 但离开文件时仍然抛出异常。
最有趣的是:当我将类的名称从 Common_TestTest 更改为 TestTest 时,会发生同样的事情 - 只是错误消息将缺少的类的名称声明为 "TestTest"。所以它肯定会看到班级并对它的存在做出反应。
【问题讨论】:
-
除了命名空间之外:哪个组件给你的错误信息?是禅德吗?消息指向哪个目录?这是一条相对路径而不是绝对路径,所以这会很有趣。如果自动加载器在错误的目录中查找,则找不到该文件。
-
这显然是一个测试类。它是存储在应用程序/Common 中还是存储在 Test FIles/Common 中?如果它在 Testing Files/Common 中,您可能在引导测试套件时遗漏了路径。
-
这里自动加载应该无关紧要,因为默认情况下,PHPUnit 通过扫描目录以查找以
Test.php结尾的文件来加载所有测试用例。事实上,我会避免使用自动加载器注册包含测试的目录。
标签: php zend-framework phpunit zend-autoloader