从PHPUnit测试用例打印日志语句的最佳做法是什么?我正在运行selenium测试用例,并希望打印出类似“登录完成”、“页面XY打开”之类的内容。我想在任何日志文件中查看它们。如果您可以定义日志级别,那就太好了。 最佳答案 我建议您使用SeleniumServerLogging.它将为您提供您可能需要的所有调试信息。如果这不是您的选择并且您仍然想从PHPUnit测试用例中登录,您有3个选择:使用内置日志记录功能(documentation),可以通过phpunit.xml文件或命令行参数(documentation)配置;通过实现
使用PHPUnit时,是否需要将测试放在/tests目录中?PHPUnit如何知道测试是“测试”?它是解析文件并查找方法名称,还是使用某种文件命名约定? 最佳答案 itrequiredforteststobeinsideofa/testsdirectory?没有。HowdoesPHPUnitknowthatatestisa"test"?通过反射(以及由用户指定要查看的目录)。 关于php-PHPUnit测试需要在"/test"目录中吗?,我们在StackOverflow上找到一个类似的问
假设我想测试一个简单的帮助程序,它将类名作为参数并进行重定向。如果从几个Controller内部的许多地方调用该函数,我应该如何测试它?我是否应该测试整个代码中作为参数传递的每个类名(我自己将它们写在提供者函数中)?或者是否有一个神奇的功能可以为我做到这一点? 最佳答案 您的问题是为什么依赖注入(inject)——当正确完成时(而不是最流行的框架“实现”它的方式)——被吹捧为代码可测试性的最终原因。要了解原因,让我们看看“辅助函数”和面向类的编程如何使您的Controller难以测试。classHelpers{publicstati
我在PHP中有一些自定义异常:classMainExceptionextendsException{};classExceptionOneextendsMainException{};classExceptionTwoextendsMainException{};我在类里面通过两种简单的方法使用它们:publicfunctionfirstFunction($param){if($some_condition){//dowhatever}else{thrownewExceptionOne();}}publicfunctionsecondFunction($param){if($some_
在PHPStorm中,我想调试一个PHPUnit类。如果我在单元测试类(继承自PHPUnit_Framework_TestCase的类)的方法中设置断点,每当我运行测试时,PHPStorm都会执行测试,但永远不会在断点处停止,即使以前停下来的其他地方都有断点。这是PHPStorm中的错误吗?如何在PHPUnit_Framework_TestCase的方法中停止? 最佳答案 为了让PHPStorm在测试中的断点处停止,您必须“调试”(Shift+F9)而不是“运行”(Shift+F10)您的配置。
我正在编写一个应该适用于PHP5.3+的库。我想使用生成器和闭包绑定(bind),但这些功能是5.5+和5.4+。大多数lib可以在没有这些功能的情况下工作,所以我只想在php具有正确的版本时运行某些单元测试。有没有简单的方法可以做到这一点?我正在寻找这样的东西:/**@version5.4+*/publicfunctiontestUsingClosureBind(){...}/**@version5.5+*/publicfunctiontestUsingGenerators(){...}但我愿意接受任何建议... 最佳答案 @re
有人可以为我提供一个好的PHPUnit模拟指南的引用吗?officialdocumentation中的那个好像不够详细我正在尝试通过阅读源代码来学习PHPUnit,但我对匹配器、调用模拟器、stub返回等术语并不熟悉。我需要了解以下内容:1)如何期望对模拟对象的方法进行多次调用,但每次调用都返回不同的值集?$tableMock->expects($this->exactly(2))->method('find')->will($this->returnValue(2));//Ineedthesecondcalltoreturndifferentvalue2)如何期望使用多个参数调用模拟
在PHPUnit中测试$_GET和$_POST输入的最佳方法是什么?我有一个净化输入的类,想检查它在处理虚假数据时是否正常工作。有没有一种简单的方法可以在PHPUnit中设置表单变量,或者我应该将验证传递给提供表单变量的辅助类/函数以便间接测试它们? 最佳答案 看看Dependencyinjection的思路.简而言之,您应该为代码提供所需的内容,而不是让代码获取所需的数据……这是一个示例:没有依赖注入(inject)的例子functionsanitize1(){foreach($_POSTas$k=>$v){//codetosan
抱歉,如果这是微不足道的,但我没有找到任何解决此问题的建议。我在Ubuntu上,我的Yii项目需要PHPUnit。我已经安装了PHPUnit两次,方法是下载phpunit.phar并将其移动到“/usr/local/bin”,然后运行:composerglobalrequire"phpunit/phpunit=3.7.*"现在我正在尝试执行我的YiiPHPUnit测试:phpunitunit/DbTest.php我得到的是:PHPWarning:require_once(PHPUnit/Extensions/SeleniumTestCase.php):failedtoopenstrea
我在Windows7上运行phpStorm7.1.3版本,我已经完成相应的一切来安装composer,然后安装phpunit。现在我把它放在vendors目录中。但是每次我运行我的程序(一个简单的Yii应用程序)时,我都会遇到同样的错误。PHPFatalerror:Uncaughtexception'UnexpectedValueException'withmessage'Cannotcreatephar'C:/wamp/www/myproject/vendor/bin/phpunit',fileextension(orcombination)notrecognisedorthedir