有没有办法让a内部的测试TestCase按特定顺序运行?例如,我想将对象的生命周期从创建分为使用分离,但我需要确保在运行其他测试之前首先设置对象.
我需要检查变量是否是User类型的对象.用户是我的班级$user我的对象
$this->assertInstanceOf($user,User);
Run Code Online (Sandbox Code Playgroud)
这不起作用,我使用未定义的常量用户 - 假设'用户'
在此先感谢您的帮助
我想用phpunit开始单元测试我的symfony 2应用程序.我使用composer安装了phpunit(每个项目的依赖性). http://www.phpunit.de/manual/current/en/installation.html
我现在如何在Zend Server上运行phpunit命令?我没有安装梨.
我想能够测试结果是一个整数(1,2,3 ...),其中函数可以返回任何数字,例如:
$new_id = generate_id();
Run Code Online (Sandbox Code Playgroud)
我以为它会是这样的:
$this->assertInstanceOf('int', $new_id);
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
PHPUnit_Framework_Assert :: assertInstanceOf()的参数#1必须是类或接口名称
我正在为使用PHPUnit的方法编写单元测试.我正在测试的方法在同一个对象上调用同一个方法3次,但使用不同的参数集.我的问题类似于这里和这里提出的问题
其他帖子中提出的问题与只采用一个论点的模拟方法有关.
但是,我的方法需要多个参数,我需要这样的东西:
$mock->expects($this->exactly(3))
->method('MyMockedMethod')
->with($this->logicalOr($this->equalTo($arg1, $arg2, arg3....argNb),
$this->equalTo($arg1b, $arg2b, arg3b....argNb),
$this->equalTo($arg1c, $arg2c, arg3c....argNc)
))
Run Code Online (Sandbox Code Playgroud)
此代码不起作用,因为equalTo()只验证一个参数.给它多个参数会引发异常:
PHPUnit_Framework_Constraint_IsEqual :: __ construct()的参数#2必须是数字
有没有办法对logicalOr具有多个参数的方法进行模拟?
提前致谢.
我试过运行以下CLI命令:
phpunit -d xdebug.profiler_enable=on XYZTestCase.php
Run Code Online (Sandbox Code Playgroud)
但它只是正常运行.谁能指出我正确的方向?谢谢!
这是XDebug设置:
xdebug
xdebug support => enabled
Version => 2.1.2
Supported protocols => Revision
DBGp - Common DeBuGger Protocol => $Revision: 1.145 $
Directive => Local Value => Master Value
xdebug.auto_trace => Off => Off
xdebug.collect_assignments => Off => Off
xdebug.collect_includes => On => On
xdebug.collect_params => 0 => 0
xdebug.collect_return => Off => Off
xdebug.collect_vars => Off => Off
xdebug.default_enable => On => On
xdebug.dump.COOKIE => no value => no value
xdebug.dump.ENV => no …Run Code Online (Sandbox Code Playgroud) 是否可以以这种方式配置PHPUnit mock?
$context = $this->getMockBuilder('Context')
->getMock();
$context->expects($this->any())
->method('offsetGet')
->with('Matcher')
->will($this->returnValue(new Matcher()));
$context->expects($this->any())
->method('offsetGet')
->with('Logger')
->will($this->returnValue(new Logger()));
Run Code Online (Sandbox Code Playgroud)
我使用PHPUnit 3.5.10,当我要求Matcher时它会失败,因为它需要"Logger"参数.这就像第二个期望是重写第一个,但是当我转储模拟时,一切看起来都不错.
虽然我确信其他人最终已经设法解决了这个问题,但我一直在关注各种文档,并且已经有了一段艰难的时间.
http://www.phpunit.de/manual/current/en/installation.html
听起来很容易.但是,根据您的设置,您可能会陷入一个兔子洞.
例如,PEAR必须是高于1.8.1的版本.我当时有1.8.0,所以我去了解如何更新PEAR
PEAR upgrade-all
Run Code Online (Sandbox Code Playgroud)
给出错误.无法访问.
sudo PEAR upgrade-all
Run Code Online (Sandbox Code Playgroud)
工作,但升级用户'sudo'拥有的PEAR安装(而不是你的主要帐户...或类似的东西,短版本是5,它显然不起作用)
cd ~
pico .bash_profile
Run Code Online (Sandbox Code Playgroud)
加
export PATH=/usr/local/bin:$PATH
Run Code Online (Sandbox Code Playgroud)
当您输入PEAR时,为您提供正确的PEAR,您终于准备好了安装PHPUnit指令的第1步.
pear channel-discover pear.phpunit.de
Run Code Online (Sandbox Code Playgroud)
错误.您无权访问/ usr/local/temp
sudo chmod 777 /usr/local/temp
Run Code Online (Sandbox Code Playgroud)
错误.您无权访问/usr/local/temp/channel.xml
sudo chmod 777 /usr/local/temp/channel.xml
pear channel-discover pear.phpunit.de
Run Code Online (Sandbox Code Playgroud)
错误.
Registry directory is not writeable by the current user
Run Code Online (Sandbox Code Playgroud)
但我在MAC上!
/sigh
/facepalm
/tears
Run Code Online (Sandbox Code Playgroud)
我实际上在我的机器上有一个phpunit的"工作副本".(YAY!)奇怪的问题是它只在我从一个特定文件夹输入phpunit时才有效
cd /usr/local/PEAR
phpunit
Run Code Online (Sandbox Code Playgroud)
^^工作
cd ~
phpunit
Run Code Online (Sandbox Code Playgroud)
^^返回
Warning: require_once(PHPUnit/Util/Filter.php): failed to open stream: No such file or directory in /usr/local/bin/phpunit on line 46
Fatal error: require_once(): Failed opening …Run Code Online (Sandbox Code Playgroud) 我在我的系统上安装了一个新的PHPUnit副本(Ubuntu 11),但每当我输入phpunit控制台时,我都会收到以下错误:
PHP Fatal error: Call to undefined method PHP_CodeCoverage_Filter::getInstance() in /usr/bin/phpunit on line 39
据我所知,我安装了PHPUnit的代码覆盖率:
>sudo pear install phpunit/PHP_CodeCoverage
phpunit/PHP_CodeCoverage is already installed and is the same as the released version 1.1.1
install failed
为什么我会收到此错误,如何解决?
phpunit ×10
php ×6
mocking ×2
pear ×2
unit-testing ×2
assert ×1
assertions ×1
composer-php ×1
installation ×1
symfony ×1
tdd ×1
ubuntu ×1
xdebug ×1