Questions tagged «phpunit»

PHPUnit是面向程序员的PHP测试框架。它是用于单元测试框架的xUnit体系结构的一个实例。


13
如何使用phpunit运行单一测试方法?
我奋力奔跑名为单个测试方法testSaveAndDrop在文件中escalation/EscalationGroupTest.php使用phpunit。我尝试了以下组合: phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=escalation/EscalationGroupTest.php::testSaveAndDrop phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest.php::testSaveAndDrop phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=EscalationGroupTest::testSaveAndDrop phpunit EscalationGroupTest escalation/EscalationGroupTest.php --filter=testSaveAndDrop 在每种情况下,都escalation/EscalationGroupTest.php将执行文件中的所有测试方法。如何只选择一种方法呢? 该类的名称为EscalationGroupTest,版本phpunit为3.2.8。
334 php  phpunit 

8
使用PHPUnit测试受保护方法的最佳实践
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我发现有关“您测试私有方法的信息性” 的讨论。 我已经决定,在某些类中,我想拥有受保护的方法,但要对其进行测试。这些方法中的一些是静态的且简短的。因为大多数公共方法都使用它们,所以我稍后可能会安全地删除测试。但是,为了从TDD方法入手并避免调试,我真的想对其进行测试。 我想到了以下几点: 答案中建议的“ 方法对象 ”对此似乎是过大的。 从公共方法开始,当更高级别的测试提供了代码覆盖范围时,请将其置于保护状态并删除测试。 继承具有可测试接口的类,使受保护的方法公开 哪个是最佳做法?还有别的事吗? 看来,JUnit会自动将受保护的方法更改为公共方法,但我对此没有更深入的了解。PHP不允许通过反射进行此操作。

16
在执行PHP单元测试期间如何在CLI中输出?
在运行PHPUnit测试时,我希望能够转储输出,以便可以调试一两个东西。 我已经尝试了以下内容(类似于PHPUnit Manual示例); class theTest extends PHPUnit_Framework_TestCase { /** * @outputBuffering disabled */ public function testOutput() { print_r("Hello World"); print "Ping"; echo "Pong"; $out = "Foo"; var_dump($out); } } 结果如下: PHPUnit @package_version@ by Sebastian Bergmann. . Time: 0 seconds, Memory: 3.00Mb OK (1 test, 0 assertions) 请注意,没有预期的输出。 截至2011年9月19日,我使用的是git版本的HEAD版本。 输出php -version: …

6
测试抽象类
如何使用PHPUnit测试抽象类的具体方法? 我希望我必须在测试中创建某种对象。但是,我不知道这是否是最佳实践,或者PHPUnit是否允许这样做。

11
如何获取PHPUnit MockObjects以基于参数返回不同的值?
我有一个PHPUnit模拟对象,'return value'无论其参数是什么,它都会返回: // From inside a test... $mock = $this->getMock('myObject', 'methodToMock'); $mock->expects($this->any)) ->method('methodToMock') ->will($this->returnValue('return value')); 我想要做的是根据传递给模拟方法的参数返回一个不同的值。我已经尝试过类似的方法: $mock = $this->getMock('myObject', 'methodToMock'); // methodToMock('one') $mock->expects($this->any)) ->method('methodToMock') ->with($this->equalTo('one')) ->will($this->returnValue('method called with argument "one"')); // methodToMock('two') $mock->expects($this->any)) ->method('methodToMock') ->with($this->equalTo('two')) ->will($this->returnValue('method called with argument "two"')); 但这会导致PHPUnit抱怨,如果未使用参数调用模拟'two',那么我认为methodToMock('two')覆盖的定义会覆盖第一个的定义。 所以我的问题是:有没有办法让PHPUnit模拟对象根据其参数返回不同的值?如果是这样,怎么办?


12
SimpleTest与PHPunit
我想知道是否有人在这两个方面都有经验,可以阐明两者之间的显着差异(如果有)? 每个组件都有什么特定的强度,使其适合任何特定情况?

7
phpunit中的assertEquals和assertSame之间的区别?
PHPUnit包含一个assertEquals方法:https : //phpunit.de/manual/current/zh/appendixes.assertions.html#appendixes.assertions.assertEquals 它还有一个assertSame方法:https ://phpunit.de/manual/current/en/appendixes.assertions.html#appendixes.assertions.assertSame 乍一看,他们似乎在做同样的事情。两者有什么区别?为什么都指定它们?
121 phpunit 

5
phpunit模拟方法使用不同参数多次调用
有什么方法可以为不同的输入参数定义不同的模拟期望吗?例如,我有一个称为DB的数据库层类。此类具有称为“ Query(string $ query)”的方法,该方法在输入时采用SQL查询字符串。是否可以为此类(DB)创建模拟并为取决于输入查询字符串的不同Query方法调用设置不同的返回值?
117 php  mocking  phpunit 

1
如何告诉phpunit停止失败
我正在运行大量的phpunit测试,我想看看哪个测试在失败后立即失败,而不是等待所有测试完成然后列出所有失败。 我怎样才能告诉phpunit做到这一点?

7
使用PHPUnit测试PHP标头
我正在尝试使用PHPunit测试一个输出一些自定义标头的类。 问题是在我的机器上是这样的: <?php class HeadersTest extends PHPUnit_Framework_TestCase { public function testHeaders() { ob_start(); header('Location: foo'); $headers_list = headers_list(); header_remove(); ob_clean(); $this->assertContains('Location: foo', $headers_list); } } 甚至这个: <?php class HeadersTest extends PHPUnit_Framework_TestCase { public function testHeaders() { ob_start(); header('Location: foo'); header_remove(); ob_clean(); } } 返回此错误: name@host [~/test]# phpunit --verbose HeadersTest.php PHPUnit …

21
PHPUnit-使用配置文件时“未执行测试”
问题 为了提高代码质量,我决定尝试学习如何使用单元测试而不是平庸的最佳测试解决方案来测试代码。 我决定使用composer为个人库安装PHPUnit,这使我可以实现常见的数据库功能。最初,我没有用于PHPUnit的配置文件,当我运行以下命令时: $ phpunit tests/GeneralStringFunctions/GeneralStringFunctionsTest 请注意,这是一个终端命令,因此未包含.php扩展名。上面提到的GeneralStringFunctionsTest实际上是一个GeneralStringFunctionsTest.php文件。 输出是我期望的: 时间:31毫秒,内存:2.75Mb OK(1个测试,1个断言) 然后,我尝试使用配置文件自动加载测试套件,而不必每次都手动输入文件。我phpunit.xml在根目录中创建了一个名为的文件,并将以下内容输入到该文件中:http : //pastebin.com/0j0L4WBD: <?xml version = "1.0" encoding="UTF-8" ?> <phpunit> <testsuites> <testsuite name="Tests"> <directory>tests</directory> </testsuite> </testsuites> </phpunit> 现在,当我运行命令时: phpunit 我得到以下输出: Sebastian Bergmann和贡献者的PHPUnit 4.5.0。 从/Users/muyiwa/Projects/DatabaseHelper/phpunit.xml中读取配置 时间:16毫秒,内存:1.50Mb 没有执行测试! 如果有帮助,我的目录结构如下: src-顶级目录(包含所有源代码) 测试-顶级目录(包含所有测试,结构与src文件夹相同) 供应商-Composer第三方文件 我也有composer json和lock文件,以及顶层phpunit xml文件。 我尝试过的事情 将目录更改phpunit.xml为tests/GeneralStringFunctions 将目录更改phpunit.xml为./tests 将phpunit.xml文件移动到tests目录,然后将目录更改为./而不是tests。 在目录标记中添加后缀属性,phpunit.xml以将“ Tests”指定为显式后缀。

3
如何跳过PHPunit中的测试?
我在与jenkins结合使用phpunit,并且我想通过在XML文件中设置配置来跳过某些测试 phpunit.xml 我知道我可以在命令行上使用: phpunit --filter testStuffThatBrokeAndIOnlyWantToRunThatOneSingleTest 由于<filters>标记仅用于代码覆盖,我如何将其转换为XML文件? 我想除了运行所有测试 testStuffThatAlwaysBreaks
88 php  phpunit 

7
phpunit避免模拟的构造函数参数
如何避免phpunit调用模拟对象的构造函数?否则,我需要一个模拟对象作为构造函数参数,另一个用于该对象,以此类推。api看起来像这样: getMock($className, $methods = array(), array $arguments = array(), $mockClassName = '', $callOriginalConstructor = TRUE, $callOriginalClone = TRUE, $callAutoload = TRUE) 我不明白。即使$callOriginalConstructor设置为false ,它仍然会抱怨构造函数参数。 我在构造函数中只有一个对象,这是一个依赖项注入。所以我认为我在那里没有设计问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.