草庐IT

PHPUnit_Invoker

全部标签

php - 使用phpunit模拟抽象类中的具体方法

有什么好的方法可以使用PHPUnit模拟抽象类中的具体方法吗?到目前为止我发现的是:expects()->will()使用抽象方法可以正常工作它不适用于具体方法。改为运行原始方法。使用mockbuilder并将所有抽象方法和具体方法提供给setMethods()是可行的。但是,它要求您指定所有抽象方法,使测试变得脆弱且过于冗长。MockBuilder::getMockForAbstractClass()忽略setMethod()。以下是一些单元测试,用于说明以上几点:abstractclassAbstractClass{publicfunctionconcreteMethod(){re

PHPUnit:如何断言一个类扩展了另一个类?

在我的PHPUnit测试中,我想断言我正在测试的类扩展了另一个类。我如何使用PHPUnit执行此操作? 最佳答案 使用assertInstanceOf()而不是PHP内置的instanceof运算符或函数,以便您获得有意义的失败消息。functiontestInstanceOf(){$obj=newFoo;self::assertInstanceOf('Bar',$obj);}...Failedassertingthatisaninstanceofclass"Bar". 关于PHPUni

PHPUnit - 如何测试回调是否被调用?

给定以下方法:publicfunctionfoo($callback){call_user_func($callback);}我如何使用PHPUnit测试回调是否真的被调用了?foo()方法没有返回值。它唯一的工作是执行给它的回调,以及其他一些查找和杂项。为简单起见,我省略了处理。我试过这样的:publicmethodtestFoo(){$test=$this;$this->obj->foo(function()use($test){$test->pass();});$this->fail();}...但是显然没有pass()方法,所以这不起作用。 最佳答案

php - 如何在单独的进程中运行单个 phpUnit 测试?

是否可以在同一进程中运行一组phpUnit测试,但确定要在其自己的进程中运行的特定测试?我一般用@runTestsInSeparateProcesses@preserveGlobalStatedisabled对于整个测试套件,但我只需要单独运行一个方法,我希望在单个进程中运行其余方法可以提高速度。谢谢 最佳答案 正如您在PHPUnitmanual中看到的那样你可以使用@runInSeparateProcess标签:classMyTestextendsPHPUnit_Framework_TestCase{/***@runInSepar

php - 对更改运行 PHPUnit 测试

每当磁盘上的文件发生更改时,我想运行我的PHPUnit测试(或至少其中的一个子集)。与您可以使用“gruntwatch”执行的操作非常相似。我有一个项目,其中我同时拥有JS和PHP,并且正在使用Grunt。在那里,我向PHPUnit支付费用,让它在我使用gruntwatch的JS测试之上运行。虽然这工作得很好,但在纯PHP项目中执行此操作似乎非常麻烦。我需要引入grunt,并添加对节点的依赖。另外,我有很多这样的PHP项目。因此,需要一个更简单的解决方案。 最佳答案 你可以使用nodewatch,这很不错:运行npminit设置一个

PHPUnit 在测试类上存储属性

我是PHPUnit的初学者。这是我创建的示例测试类:classNewTestextendsPHPUnit_Framework_TestCase{protected$foo;functiontestFirst(){$this->foo=true;$this->assertTrue($this->foo);}/***@dependstestFirst*/functiontestSecond(){$this->assertTrue($this->foo);}}当执行testSecond时,它抛出一个错误“UndefinedpropertyNewTest::$foo”。为什么会这样?PHPUn

php - PHPunit 配置文件 phpunit.xml.dist 或 phpunit.xml 的命名有什么不同吗

谁能给我解释一下使用名为phpunit.xml.dist或phpunit.xml的PHPunit配置文件有什么区别。officialdocumentation提到两个名字:PHPUnit'sXMLconfigurationfile(AppendixC)canalsobeusedtocomposeatestsuite.Example5.1showsaminimalphpunit.xmlfilethatwilladdall*Testclassesthatarefoundin*Test.phpfileswhenthetestsdirectoryisrecursivelytraversed.在

php - 断言 var 是 phpunit 中没有特定字符的非空字符串

我想断言变量是phpunit中的(非空)字符串,但我不想断言该字符串必须匹配任何确切的字符串。例如,我想拉取一个用户名,并确保我成功获得了一些非空的用户名,但我不关心我得到的到底是哪个用户名。我可以很容易地断言它是一个非空变量,或者它是一个与某个字符串完全匹配的字符串,或者断言var是一个没有phpunit帮助的字符串:$this->assertNotEmpty($username);$this->assertSame('myusername',$username);$this->assertTrue(is_string($username));这些都接近我需要的,使用is_strin

phpunit memory_limit 参数不适用

我刚刚在macosx10.7中通过pear安装了phpunit,一切正常,除了出现内存限制错误(为报告启用了xdebug)。我尝试将-dmemory_limit=512M参数添加到phpunit但它没有应用,因为在第一个错误中,我添加了var_dump(ini_get('memory_limit'));exit;并打印string(3)"32M"那么,为什么它没有被应用呢?除此之外,如果我运行php-dmemory_limit=256M-r"echoini_get('memory_limit');"它呼应“256M”是否有可能phpunit没有执行相同的php?

PHPUnit:从 setUp() 获取测试类和方法的名称?

PHPUnit在运行特定测试之前运行测试类的setUp()方法。我为测试类中的每个测试加载特定于测试的装置,并且不希望必须显式地这样做。理想情况下,我希望在setUp()方法中自动处理这个问题。如果setUp()方法使测试类名称和测试方法名称可用,则可以完成此操作。我在setUp()方法中是否可以获得即将运行的测试类和方法的名称? 最佳答案 实现此目的的最简单方法应该是在setUp()中调用$this->getName()。getName());}publicfunctiontestMethod(){$this->assertEqu