我目前正在结合使用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()方法,所以这不起作用。 最佳答案
是否可以在同一进程中运行一组phpUnit测试,但确定要在其自己的进程中运行的特定测试?我一般用@runTestsInSeparateProcesses@preserveGlobalStatedisabled对于整个测试套件,但我只需要单独运行一个方法,我希望在单个进程中运行其余方法可以提高速度。谢谢 最佳答案 正如您在PHPUnitmanual中看到的那样你可以使用@runInSeparateProcess标签:classMyTestextendsPHPUnit_Framework_TestCase{/***@runInSepar
每当磁盘上的文件发生更改时,我想运行我的PHPUnit测试(或至少其中的一个子集)。与您可以使用“gruntwatch”执行的操作非常相似。我有一个项目,其中我同时拥有JS和PHP,并且正在使用Grunt。在那里,我向PHPUnit支付费用,让它在我使用gruntwatch的JS测试之上运行。虽然这工作得很好,但在纯PHP项目中执行此操作似乎非常麻烦。我需要引入grunt,并添加对节点的依赖。另外,我有很多这样的PHP项目。因此,需要一个更简单的解决方案。 最佳答案 你可以使用nodewatch,这很不错:运行npminit设置一个
我是PHPUnit的初学者。这是我创建的示例测试类:classNewTestextendsPHPUnit_Framework_TestCase{protected$foo;functiontestFirst(){$this->foo=true;$this->assertTrue($this->foo);}/***@dependstestFirst*/functiontestSecond(){$this->assertTrue($this->foo);}}当执行testSecond时,它抛出一个错误“UndefinedpropertyNewTest::$foo”。为什么会这样?PHPUn
谁能给我解释一下使用名为phpunit.xml.dist或phpunit.xml的PHPunit配置文件有什么区别。officialdocumentation提到两个名字:PHPUnit'sXMLconfigurationfile(AppendixC)canalsobeusedtocomposeatestsuite.Example5.1showsaminimalphpunit.xmlfilethatwilladdall*Testclassesthatarefoundin*Test.phpfileswhenthetestsdirectoryisrecursivelytraversed.在
我想断言变量是phpunit中的(非空)字符串,但我不想断言该字符串必须匹配任何确切的字符串。例如,我想拉取一个用户名,并确保我成功获得了一些非空的用户名,但我不关心我得到的到底是哪个用户名。我可以很容易地断言它是一个非空变量,或者它是一个与某个字符串完全匹配的字符串,或者断言var是一个没有phpunit帮助的字符串:$this->assertNotEmpty($username);$this->assertSame('myusername',$username);$this->assertTrue(is_string($username));这些都接近我需要的,使用is_strin