配置/ test.php的
'components'=>array(
'fixture'=>array(
'class'=>'system.test.CDbFxtureManager'
),
),
Run Code Online (Sandbox Code Playgroud)
tests/unit/EntityTest.php(扩展CDbTestCase)
public $fixtures = array('entities'=>'Entity'),
Run Code Online (Sandbox Code Playgroud)
测试/夹具/ Entity.php
return array(
'entity1'=>array('slug'=>'slug1', 'title'=>'title1'),
'entity2'=>array('slug'=>'slug2', 'title'=>'title2'),
);
Run Code Online (Sandbox Code Playgroud)
现在,在EntityTest类中,我尝试获取我的实体
$entities = $this->entities;
$entity = $this->entities('entity1');
Run Code Online (Sandbox Code Playgroud)
输出是'Unknown property'实体"for class"EntityTest"'.测试类是'Entity',数据库中的表名是'tbl_entity','tablebrefix'选项'CDbConnection'组件设置为'tbl_'
目前,我正在尝试首次将单元测试应用于项目.出现了两个问题:
如果多个测试相互依赖,这是不好的做法吗?在下面的代码中,几个测试需要其他测试的结果是积极的,这是一般的最佳实践吗?
您与SUT依赖的模拟物体相距多远?在下面的代码中,'Router'取决于'Route',它取决于'RouteParameter'.嘲笑还是不嘲笑?
下面的代码是测试我的'Router'对象,它接受路由Router::addRoute($route)并通过URL路由URL Router::route($url).
class RouterTest extends PHPUnit_Framework_TestCase {
protected function createSimpleRoute() {
$route = new \TNT\Core\Models\Route();
$route->alias = 'alias';
$route->route = 'route';
$route->parameters = array();
return $route;
}
protected function createAlphanumericRoute() {
$route = new \TNT\Core\Models\Route();
$route->alias = 'alias';
$route->route = 'test/[id]-[name]';
$parameterId = new \TNT\Core\Models\RouteParameter();
$parameterId->alias = 'id';
$parameterId->expression = '[0-9]+';
$parameterName = new \TNT\Core\Models\RouteParameter();
$parameterName->alias = 'name';
$parameterName->expression = '[a-zA-Z0-9-]+';
$route->parameters = array($parameterId, $parameterName);
return $route;
}
public function testFilledAfterAdd() { …Run Code Online (Sandbox Code Playgroud) 现在已经2天了,我一直试图让phpunit在我的OSX上工作.我正在从MAMP安装运行php.
我已经通过PEAR安装了所有依赖项.phpunit --version命令正在运行并显示:
$ phpunit --version
PHPUnit 3.6.10 by Sebastian Bergmann.
Run Code Online (Sandbox Code Playgroud)
但是,当我从命令行运行测试时,它显示:
Warning: require_once(/Applications/MAMP/bin/php/php5.3.6/lib/php/PHPUnit/Framework): failed to open stream: No such file or directory in /Users/magalie/Sites/HelloWorld/HelloWorldTest.php on line 3
Call Stack:
0.0028 632128 1. {main}() /Applications/MAMP/bin/php/php5.3.6/bin/phpunit:0
0.0078 1161288 2. PHPUnit_TextUI_Command::main() /Applications/MAMP/bin/php/php5.3.6/bin/phpunit:46
0.0078 1162016 3. PHPUnit_TextUI_Command->run() /Applications/MAMP/bin/php/php5.3.6/lib/php/PHPUnit/TextUI/Command.php:130
0.1109 1793352 4. PHPUnit_Runner_BaseTestRunner->getTest() /Applications/MAMP/bin/php/php5.3.6/lib/php/PHPUnit/TextUI/Command.php:150
0.1109 1793352 5. PHPUnit_Runner_BaseTestRunner->loadSuiteClass() /Applications/MAMP/bin/php/php5.3.6/lib/php/PHPUnit/Runner/BaseTestRunner.php:104
0.1115 1837832 6. PHPUnit_Runner_StandardTestSuiteLoader->load() /Applications/MAMP/bin/php/php5.3.6/lib/php/PHPUnit/Runner/BaseTestRunner.php:168
0.1126 1983864 7. PHPUnit_Util_Fileloader::checkAndLoad() /Applications/MAMP/bin/php/php5.3.6/lib/php/PHPUnit/Runner/StandardTestSuiteLoader.php:78
0.1127 1983984 8. PHPUnit_Util_Fileloader::load() /Applications/MAMP/bin/php/php5.3.6/lib/php/PHPUnit/Util/Fileloader.php:79
0.1128 1994704 9. include_once('/Users/magalie/Sites/HelloWorld/HelloWorldTest.php') /Applications/MAMP/bin/php/php5.3.6/lib/php/PHPUnit/Util/Fileloader.php:95
Fatal error: require_once(): Failed opening …Run Code Online (Sandbox Code Playgroud) <?php
require_once('app/config.php'); // Require constants HOST, DATABASE, USER, PASSWORD
/*
dbConnection class.
Manages connections to and operations on the database. Call dbConnection::getInstance() to return an instance.
Prepare your statements by calling prepareQuery() on the object
Attribute list:
$instance:
> Static self instance to manage database resource
$connection:
> Holds connection resource
$sth:
> Statement handler variable. Handles SQL statements.
_______________________________________________________________________________________________________________
Method list:
getInstance():
> Creates or returns existing connection to the database
prepareQuery():
> Prepares the $sth …Run Code Online (Sandbox Code Playgroud) 我正在使用ubuntu 11.10作为我的本地机器上的root用户,我安装了xampp 1.7.7并且我是ubuntu的新手,同时遵循sitepoint上的教程(http://www.sitepoint.com/getting-关于如何安装梨以使用PhpUnit,我没有注意到它,但似乎我在CL中安装或使用现有的php版本5.3.6来做到这一点,而且梨安装也建立在这个版本,在安装xampp时,我现在有两个版本的php,xampp的5.3.8和5.3.6,无论如何,我想要做的是使用现有的xampp php版本并在其上构建pear,以使所有我的工作通过xampp.so我的问题是:
我在attampet做了以下解决问题:
我用bash写的:
gedit~/.bashrc
我添加到〜/ .bashrc文件的末尾以尝试更改环境路径:
export PATH =/opt/lampp/bin:$ PATH export PATH =/opt/lampp/lib/php:$ PATH export PATH =/opt/lampp/lib/php/PHPUnit/pearcmd.php:$ PATH
我使用'php -v'和'pear list'检查了php和pear版本,我得到了一个输出:
PHP 5.3.8(cli)(内建于2011年9月19日13:29:27)版权所有(c)1997-2011 PHP Group Zend Engine v2.3.0,版权所有(c)1998-2011 Zend Technologies
和梨:
Installed packages, channel pear.php.net:
=========================================
Package Version State
Archive_Tar 1.3.9 stable
Console_Getopt 1.3.1 stable
PEAR 1.9.4 stable
PHPUnit 1.3.2 stable
Structures_Graph 1.0.4 stable
XML_Util 1.2.1 stable
Run Code Online (Sandbox Code Playgroud)
当我运行:'phpunit MessageTest.php':我明白了
PHP警告:require_once(PHP/CodeCoverage/Filter.php):无法打开流:第38行/ usr/bin/phpunit中没有此类文件或目录
警告:require_once(PHP/CodeCoverage/Filter.php):无法打开流:第38行/ usr/bin/phpunit中没有此类文件或目录PHP致命错误:require_once():无法打开所需的'PHP/CodeCoverage/Filter/usr/bin/phpunit上的.php'(include_path ='.:/ php/includes:/ opt/lampp/lib/php:/ opt/lampp/bin:/ opt/lampp/lib/php/PEAR')第38行
5.i运行以下命令,如其他问题所述,作为该错误的解决方案:
sudo …Run Code Online (Sandbox Code Playgroud) 我试过这个
phpunit --debug --filter /^complete/ feed.php;
出于某种原因,它说0测试.
如果我这样做phpunit --debug --filter /complete/ feed.php;会点击任何带有"完整"一词的功能
我想在不同的流程中运行我的测试.因此,我想用"@runTestsInSeparateProcesses"注释我的测试.但是,我之前从未注释过Phpunit测试,但我无法找到实际放置注释的好地方.我已经看到了不同注释的作用,而不是放在哪里.有人可以举个例子吗?
谢谢!
我已经安装了PHPUnit框架来执行单元测试.我编写了测试用例,并使用现有的PHPUnit库进行测试.
是否有必要在登台和生产环境中配置PHPUnit框架?如果是这样,phpunit测试框架和相关文件在暂存和生产中占用了内存,这是不必要的.
在本地环境中使用PHPUnit测试框架是否足够?
即使请求的页面不存在,我总是在我的测试用例中获得状态代码200/ok.
public function testCompleteScenario()
{
$client = static::createClient();
$container = $client->getContainer();
$kernel = $client->getKernel();
$crawler = $client->request('GET', '/somethingnotexisting');
$this->assertTrue(200 === $client->getResponse()->getStatusCode());
}
Run Code Online (Sandbox Code Playgroud)
我正在使用带有netbeans 7.1的phpunits,并且我的symfony防火墙配置为仅允许经过身份验证的用户.否则,他们会重定向到登录页面.
可能有一些php.ini调优吗?
编辑:
这是我从netbeans获得的代码:

我的测试运行得太快,代码总是失败.有没有办法暂停?
我试过$ this-> pause('3000'); 和$ this-> wait('3000'); 但它不起作用.
现在,我正在使用$ this-> setSpeed('3000'); 但它运行得太慢了.
phpunit ×10
php ×6
unit-testing ×3
annotations ×1
dependencies ×1
mamp ×1
mysql ×1
pear ×1
regex ×1
selenium ×1
singleton ×1
symfony ×1
testing ×1
ubuntu-11.10 ×1
xampp ×1
yii ×1