安装phpUnit 3.5后,我试图以这种方式运行我的测试:
phpunit AllTests.php
但我收到以下错误:
PHP Fatal error: Class 'PHPUnit_TextUI_TestRunner' not found in /usr/share/php/PHPUnit/TextUI/Command.php on line 140
Fatal error: Class 'PHPUnit_TextUI_TestRunner' not found in /usr/share/php/PHPUnit/TextUI/Command.php on line 140
这是我的AllTests.php
的内容以下是Alltests.php的内容
<?php
if (!defined('PHPUnit_MAIN_METHOD')) {
define('PHPUnit_MAIN_METHOD', 'AllTests::main');
}
/**
* TestHelper
*/
require_once 'TestHelper.php';
/**
* @see SF_Unit_AllTests
*/
require_once 'unit/AllTests.php';
class AllTests
{
public static function main()
{
$parameters = array();
PHPUnit_TextUI_TestRunner::run(self::suite(), $parameters);
}
public static function suite()
{
$suite = new PHPUnit_Framework_TestSuite('EventManager');
$suite->addTest(SF_Unit_AllTests::suite());
return $suite;
}
}
if (PHPUnit_MAIN_METHOD == 'AllTests::main') {
AllTests::main();
}
这是Unit / AllTests.php文件
<?php
if (!defined('PHPUnit_MAIN_METHOD')) {
define('PHPUnit_MAIN_METHOD', 'SF_Unit_AllTests::main');
}
/**
* Testhelper
*/
require_once dirname(__FILE__). '/../TestHelper.php';
/**
* Include unit tests
*/
require_once('unit/Model/ModelAbstractTest.php');
require_once('unit/Model/EventTest.php');
//require_once('unit/Model/UserTest.php');
//require_once('unit/Model/AuthenticationTest.php);
/**
*
* @author jigal
*
*/
class SF_Unit_AllTests
{
/**
*
* @return unknown_type
*/
public static function main()
{
PHPUnit_TextUI_TestRunner::run(self::suite());
}
/**
*
* @return PHPUnit_Framework_TestSuite
*/
public static function suite()
{
$suite = new PHPUnit_Framework_TestSuite('EventManager Unit tests');
$suite->addTestSuite('ModelAbstractTest');
$suite->addTestSuite('EventTest');
//$suite->addTestSuite('UserTest');
//$suite->addTestSuite('Authentication')
return $suite;
}
}
if (PHPUnit_MAIN_METHOD == 'SF_Unit_AllTests::main') {
SF_Unit_AllTests::main();
}
TestHelper.php
/**
* Get PHPUnit
*/
require_once 'PHPUnit/Autoload.php';
/*
* Set error reporting level
*/
error_reporting( E_ALL | E_STRICT );
/**
* Default timezone
*/
date_default_timezone_set('Europe/London');
/*
* Set the include path
*/
/*
* Set the include path
*/
$root = realpath(dirname(__FILE__) . '/../');
$paths = array(
"/usr/share/php/",
"$root/library/Incu",
"$root/library",
"$root/tests",
"$root/application"
);
set_include_path(get_include_path() . PATH_SEPARATOR . implode(PATH_SEPARATOR, $paths))
;
defined('APPLICATION_PATH')
or define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
defined('APPLICATION_ENV')
or define('APPLICATION_ENV', 'development');
require_once 'Zend/Application.php';
/**
* Autoloader helpers
*/
function _SF_Autloader_SetUp()
{
require_once 'Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
$loader->registerNamespace('SF_');
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH.'/configs/events.ini'
);
}
function _SF_Autloader_TearDown()
{
Zend_Loader_Autoloader::resetInstance();
$loader = Zend_Loader_Autoloader::getInstance();
$loader->registerNamespace('SF_');
}
/**
* Init autoloader
*/
_SF_Autloader_SetUp();
/**
* Start session now!
*/
Zend_Session::$_unitTestEnabled = true;
Zend_Session::start();
/**
* Ignore folders from code coverage etc
*/
//PHPUnit_Util_Filter::addDirectoryToFilter("$root/tests");
//PHPUnit_Util_Filter::addDirectoryToFilter("$root/library/Zend");
PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist("$root/tests");
PHP_CodeCoverage_Filter::getInstance()->addDirectoryToBlacklist("$root/library/Zend");
任何想法?
更新
我已将/ usr / share / php添加到我的包含路径中。 现在我得到了一个不同的错误:
PHPUnit 3.5.0 by Sebastian Bergmann.
....PHP Fatal error: Class 'PHPUnit_Framework_MockObject_Generator' not found in /usr/share/php/PHPUnit/Framework/TestCase.php on line 1049
Fatal error: Class 'PHPUnit_Framework_MockObject_Generator' not found in /usr/share/php/PHPUnit/Framework/TestCase.php on line 1049
答案 0 :(得分:10)
嗯,实际上Laurent Laffont提供了正确答案:MockObject安装不完整。
每Installation Instructions你需要卸载以前的PHPUnit,然后才能安装3.5版
但这似乎还不够,您还必须卸载额外的软件包(在本例中为PHPUnit_MockObjects),然后才安装新的文字:
pear uninstall phpunit/phpunit
pear uninstall phpunit/PHP_MockObject
pear install phpunit/phpunit
重新安装了PHP_MockObject包,其中包含所有必需的文件。
答案 1 :(得分:5)
对于PHPUnit_Framework_MockObject_Generator错误,必须手动获取http://pear.phpunit.de/get/PHPUnit_MockObject-1.0.0.tgz并复制
PHPUnit_MockObject-1.0.0/PHPUnit/Framework/MockObject/
到
/usr/share/pear/PHPUnit/Framework/
答案 2 :(得分:3)
你需要
require_once 'PHPUnit/Framework.php'
因为phpunit 3.4 IIRC。不要再尝试加载单个PHPUnit文件了。
哦,在PHPUnit 3.5中,你应该使用一个自动加载器:
require_once 'PHPUnit/Autoload.php';
答案 3 :(得分:3)
我必须做同样的事情@Laurent说,你的phpunit安装在哪里都没关系。
如果您使用pear安装PHPUnit,只需在shell中执行pear config-get php_dir
。 PHPUnit很可能安装在该目录中。
无论您的PHPUnit安装在何处,请将PHPUnit/Framework/MockObject
上的目录替换为您从此处下载的文件夹中的PHPUnit/Framework/MockObject/
目录
http://pear.phpunit.de/get/PHPUnit_MockObject-1.0.0.tgz