2011-05-13 36 views
1

我刚刚在我的系统上安装了PHPUnit 3.5,从3.4升级到3.4,我在新版本中遇到了一些麻烦。当我尝试运行测试时,我总是得到相同的输出。下面是我得到的,当我尝试从PHPUnit的手动在命令行上运行StackTest例如,example 4.1PHPUnit错误 - 无法找到类

> phpunit StackTest 

X-Powered-By: PHP/5.2.17 
Content-type: text/html 

PHPUnit 3.5.13 by Sebastian Bergmann. 

Class StackTest could not be found in StackTest.php. 

更糟糕的是,当我尝试从Web浏览器中运行它,我得到以下的输出:

Fatal error: Class 'PHPUnit_Framework_TestCase' not found in /path/to/tests/StackTest.php on line 2 

有谁知道如何设置?谢谢。

回答

1

听起来像PHPUnit不在您的包含路径。为了方便地测试这一点,试试这个:

$ phpunit --include-path /path/to/PHPUnit StackTest 
+0

不幸的是,这并没有奏效。我尝试用phpunit应用程序的路径和PHPUnit支持文件(PEAR放入不同的目录)替换/ path/to/PHPUnit。没有运气。 – jay 2011-05-13 20:23:20

+0

如果您的以前的版本工作,降级。 :-) – 2011-05-13 20:30:27

0

尝试

pear upgrade pear 

(如果它要求你到渠道升级这么做)

然后

pear install --force --alldeps phpunit/phpunit 

,然后再试一次。

3.5升级加上一个buggy梨安装程序(1.9.1有一个有点烦人的错误,所以确保你真的在1.9.2)有时可以是一个痛苦。

4

我遇到了你在Windows上描述的问题。 问题是在文件梨\上线131的它是由不同的驱动器盘符情况下,文件名中的条件造成的PHPUnit \亚军\ StandardTestSuiteLoader.php

if ($class->getFileName() == realpath($suiteClassFile)) { 

我简单的解决方法是此行更改为不区分大小写

if (strtolower($class->getFileName()) == strtolower(realpath($suiteClassFile))) { 
1

我觉得你的PHPUnit的类名为StackTest,你要测试的类也被命名StackTest。这将导致PHPUnit中的路径冲突。

使这两个名称不同,你会得到解决。

0

在我而言,这个问题引起通过require_once包括源文件中的PHPUnit:

require_once 'phar://phpunit.phar'; 

删除这一行做了我的测试情况下运行的。

0

我能解决这个问题。这是我上课的结果。我在参数数组中使用了我的参数,就像这样工作。但是还有很多类路径等问题,我必须先解决。看看这里的工作解决方案(http://www.siteconsortium.com/h/p1.php?id=php002)。

$command = new PHPUnit_TextUI_Command(); 
$command->run(array('test', 'testCase', 'c:\workspace\project\testCase.php'), true); 
1
phpunit MyTestClass 

在我的情况

  • MyTestClass。PHP的应该是在项目的主目录
  • 它应该开始用长PHP的开放标签(<?php,不<?
  • 它应该包含class MyTestClass extends PHPUnit_Framework_TestCase {

我知道这是最有可能不是最好的方式,只是指向一个初学者开始。