san*_*ers 4 testing phpunit unit-testing zend-framework
安装phpUnit 3.5后,我试图以这种方式运行我的测试:
phpunit AllTests.php
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
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
Run Code Online (Sandbox Code Playgroud)
这是我的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();
}
Run Code Online (Sandbox Code Playgroud)
这是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();
}
Run Code Online (Sandbox Code Playgroud)
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");
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
更新
我已将/ usr/share/php添加到我的include路径中.现在我得到一个不同的错误:
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
Run Code Online (Sandbox Code Playgroud)
Vic*_*agi 10
好吧,实际上Laurent Laffont提供了正确答案:MockObject安装不完整.
每个安装说明您必须先卸载以前的PHPUnit,然后才能安装3.5版
但这似乎还不够,您还必须卸载额外的软件包(在本例中为PHPUnit_MockObjects),然后才安装新的版本:
pear uninstall phpunit/phpunit
pear uninstall phpunit/PHP_MockObject
pear install phpunit/phpunit
Run Code Online (Sandbox Code Playgroud)
并重新安装了PHP_MockObject包,其中包含所有必需的文件.
小智 5
对于PHPUnit_Framework_MockObject_Generator错误,必须手动获取http://pear.phpunit.de/get/PHPUnit_MockObject-1.0.0.tgz并复制
PHPUnit_MockObject-1.0.0/PHPUnit/Framework/MockObject/
Run Code Online (Sandbox Code Playgroud)
至
/usr/share/pear/PHPUnit/Framework/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6088 次 |
| 最近记录: |