我在使用命令行运行测试时遇到问题:如果我这样运行phpunit:phpunit-–no-configuration-–filtertestAddDataTestDataProviderTest.php它工作正常。但是我们使用正则表达式来准确指定我们要测试的方法的名称:phpunit-–no-configuration-–filter/::testAdd$/DataTestDataProviderTest.php不幸的是,第二种方法不起作用。源代码是:assertEquals($c,$a+$b);}publicfunctionprovider(){returnarray(array(0,
这是试图为类的方法编写测试,该类调用带有闭包的模拟方法。您将如何验证正在调用的闭包?我知道您可以断言该参数是Closure的一个实例。但是您将如何检查有关闭包的任何信息?例如,您将如何验证传递的函数:classSUT{publicfunctionfoo($bar){$someFunction=function(){echo"Iamananonymousfunction";};$bar->baz($someFunction);}}classSUTTestextendsPHPUnit_Framework_TestCase{publicfunctiontestFoo(){$mockBar=$
我已经声明了一个HTTP_HOST,如下所示。publicfunctiontestReadUser(){$_SERVER['HTTP_HOST']="x.y";...}尽管如此,phpunit还是给出了undefinedindex错误。这是为什么? 最佳答案 在您的phpunit.xml文件中,您可以设置服务器变量。在phpunit根下添加php元素:参见thedocs获取更多信息。 关于PHPUnit错误"undefinedindex:HTTP_HOST",我们在StackOverfl
我正在尝试使用selenium17.1(Link)从PHPUnit运行示例我已经完成了所有安装,但它总是失败。我刚刚得到:1)WebTest::testTitleBadMethodCallException:Thecommandhttp://localhost:4444/wd/hub/session/urlisnotrecognizedbytheserver.我没有对示例进行任何更改。Selenium服务器正在运行。我不知道哪里出了问题。帮忙?回答:请看@rutter的评论:您知道您运行的是哪个版本的PHPUnit_Selenium吗?据报告,自1.3.2起已修复此问题(更新日志、拉取
classTestme(){publicfunctiontestMe($a){if($a==1){thrownewException('YAY');}}}所以很容易测试它是否抛出异常/***@expectedExceptionException*/publicfunctiontest(){newTestme(1);}但是如果它什么也没做?publicfunctiontest(){newTestme(2);??????} 最佳答案 场景函数不执行任何操作有两种可能的情况:场景一:没有return语句您的函数什么都不做,因为您没有在其中
我目前正在结合使用ZendFramework和PHPUnit对应用程序进行单元测试。当Hudson执行PHPUnitshell命令时,在代码覆盖率生成期间的某个时间达到最大PHP内存限制。我目前总共有41个测试和334个断言。通过使用-dmemory_limit=768M开关将memory_limit设置提高到768M,我成功地消除了这个错误;但是,我担心随着测试/断言总数的增加,复杂性也会增加,我将没有足够的内存来生成用于代码覆盖率统计的HTML。操作系统:CentOS5.5控制面板:WHM/cPanelCI服务器:Hudson/usr/local/bin/phpunit--verb
我正在为使用模拟调用另一个类的方法的类方法编写单元测试,只有需要调用的方法被声明为final方法,因此PHPUnit无法模拟它。我可以采用其他方法吗?例子:要模拟的类classClass_To_Mock{finalpublicfunctionneedsToBeCalled($options){...}}我的测试用例classMyTestextendsPHPUnit_Framework_TestCase{publicfunctiontestDoSomething(){$mock=$this->getMock('Class_To_Mock',array('needsToBeCalled')
有什么好的方法可以使用PHPUnit模拟抽象类中的具体方法吗?到目前为止我发现的是:expects()->will()使用抽象方法可以正常工作它不适用于具体方法。改为运行原始方法。使用mockbuilder并将所有抽象方法和具体方法提供给setMethods()是可行的。但是,它要求您指定所有抽象方法,使测试变得脆弱且过于冗长。MockBuilder::getMockForAbstractClass()忽略setMethod()。以下是一些单元测试,用于说明以上几点:abstractclassAbstractClass{publicfunctionconcreteMethod(){re
在我的PHPUnit测试中,我想断言我正在测试的类扩展了另一个类。我如何使用PHPUnit执行此操作? 最佳答案 使用assertInstanceOf()而不是PHP内置的instanceof运算符或函数,以便您获得有意义的失败消息。functiontestInstanceOf(){$obj=newFoo;self::assertInstanceOf('Bar',$obj);}...Failedassertingthatisaninstanceofclass"Bar". 关于PHPUni
给定以下方法:publicfunctionfoo($callback){call_user_func($callback);}我如何使用PHPUnit测试回调是否真的被调用了?foo()方法没有返回值。它唯一的工作是执行给它的回调,以及其他一些查找和杂项。为简单起见,我省略了处理。我试过这样的:publicmethodtestFoo(){$test=$this;$this->obj->foo(function()use($test){$test->pass();});$this->fail();}...但是显然没有pass()方法,所以这不起作用。 最佳答案