标签: phpunit

以某种顺序运行PHPUnit测试

有没有办法让a内部的测试TestCase按特定顺序运行?例如,我想将对象的生命周期从创建分为使用分离,但我需要确保在运行其他测试之前首先设置对象.

php phpunit unit-testing

57
推荐指数
5
解决办法
3万
查看次数

PHPUnit:assertInstanceOf()不起作用

我需要检查变量是否是User类型的对象.用户是我的班级$user我的对象

$this->assertInstanceOf($user,User);
Run Code Online (Sandbox Code Playgroud)

这不起作用,我使用未定义的常量用户 - 假设'用户'

在此先感谢您的帮助

php phpunit assert assertions

56
推荐指数
3
解决办法
5万
查看次数

如何使用从composer安装的phpunit?

我想用phpunit开始单元测试我的symfony 2应用程序.我使用composer安装了phpunit(每个项目的依赖性). http://www.phpunit.de/manual/current/en/installation.html

我现在如何在Zend Server上运行phpunit命令?我没有安装梨.

phpunit symfony composer-php

55
推荐指数
6
解决办法
6万
查看次数

如何使用phpunit强制失败

是否有更正式的方法来强制phpunit失败$this->assertTrue(false)

phpunit

54
推荐指数
1
解决办法
1万
查看次数

如何断言结果是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必须是类或接口名称

php phpunit unit-testing

53
推荐指数
5
解决办法
3万
查看次数

PHPUnit:如何使用多个参数模拟多个方法调用?

我正在为使用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具有多个参数的方法进行模拟?

提前致谢.

php tdd phpunit mocking

51
推荐指数
4
解决办法
4万
查看次数

如何在CLI上使用PHPUnit运行XDebug?

我试过运行以下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)

php phpunit xdebug command-line-interface

51
推荐指数
6
解决办法
3万
查看次数

PHPUnit中的模拟 - 使用不同参数的相同方法的多个配置

是否可以以这种方式配置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"参数.这就像第二个期望是重写第一个,但是当我转储模拟时,一切看起来都不错.

php phpunit mocking

49
推荐指数
4
解决办法
2万
查看次数

在OSX上设置PHPUnit

虽然我确信其他人最终已经设法解决了这个问题,但我一直在关注各种文档,并且已经有了一段艰难的时间.

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)

installation pear phpunit osx-snow-leopard

48
推荐指数
5
解决办法
4万
查看次数

调用未定义的方法PHP_CodeCoverage_Filter :: getInstance()

我在我的系统上安装了一个新的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

为什么我会收到此错误,如何解决?

ubuntu pear phpunit

48
推荐指数
3
解决办法
3万
查看次数