我有一个PHPUnit测试用例类(由一些测试函数组成)。我想为类中的所有测试编写一个oneTimeSetUp()函数(与每个测试调用一次的标准setUp()函数不同在类里)。换句话说,我正在寻找与JUnit@BeforeClassannotation等效的PHPUnit。.与oneTimeTearDown()函数相同的问题。在PHPUnit中可以这样做吗? 最佳答案 看看section6中的setUpBeforeClass()PHPUnit文档。一次性tearDown你应该使用tearDownAfterClass();。这两种方法都
我阅读并阅读了有关PHPUnit、SimpleTest和其他单元测试框架的文章。他们都听起来太棒了!感谢https://bitbucket.org/kenjis/my-ciunit/overview,我终于让PHPUnit与Codeigniter一起工作现在我的问题是,我该如何使用它?我看到的每个教程都有一些抽象用法,例如assertEquals(2,1+1)或者:publicfunctiontestSpeakWithParams(){$hello=newSayHello('Marco');$this->assertEquals("HelloMarco!",$hello->speak(
这就是我所拥有的:$observer=$this->getMock('SomeObserverClass',array('method'));$observer->expects($this->once())->method('method')->with($this->equalTo($arg1));但是这个方法应该有两个参数。我只是在测试第一个参数是否正确传递(作为$arg1)。如何测试第二个参数? 最佳答案 我相信这样做的方法是:$observer->expects($this->once())->method('method
我正在将phpunit与jenkins结合使用,我想通过在XML文件phpunit.xml中设置配置来跳过某些测试我知道我可以在命令行上使用:phpunit--filtertestStuffThatBrokeAndIOnlyWantToRunThatOneSingleTest自从之后,我如何将其转换为XML文件标签仅用于代码覆盖?我想运行除testStuffThatAlwaysBreaks之外的所有测试 最佳答案 跳过已损坏或您需要稍后继续工作的测试的最快和最简单的方法是将以下内容添加到您的单个单元测试的顶部:$this->mark
我有一个关于使用PHPUnit在类中模拟私有(private)方法的问题。举个例子来介绍一下:classA{publicfunctionb(){//somecode$this->c();//somemorecode}privatefunctionc(){//somecode}}如何stub私有(private)方法的结果来测试公共(public)函数的更多代码部分。解决了部分阅读here 最佳答案 通常你只是不直接测试或模拟私有(private)和protected方法。您要测试的是您类(class)的publicAPI。其他所有内
我正在运行大量的phpunit测试,我想看看哪个测试一旦失败就失败了,而不是等待所有测试完成然后让它列出所有失败。我怎样才能告诉phpunit这样做? 最佳答案 将stopOnFailure="true"属性添加到您的phpunit.xml根元素。您也可以在CLI中使用它:phpunit--stop-on-failure手册中的信息和其他可能对您有用的信息:stopOnError-“出现第一个错误时停止执行。”stopOnFailure-“在第一个错误或失败时停止执行。”stopOnIncomplete-“在第一次不完整的测试时停止
有什么方法可以避免phpunit必须调用模拟对象的构造函数?否则我需要一个模拟对象作为构造函数参数,另一个用于那个等等。api似乎是这样的:getMock($className,$methods=array(),array$arguments=array(),$mockClassName='',$callOriginalConstructor=TRUE,$callOriginalClone=TRUE,$callAutoload=TRUE)我不让它工作。它仍然提示构造函数参数,即使$callOriginalConstructor设置为false。我在构造函数中只有一个对象,它是一个依赖注
我正在尝试使用PHPunit来测试一个输出一些自定义header的类。问题是在我的机器上是这样的:assertContains('Location:foo',$headers_list);}}甚至这个:返回此错误:name@host[~/test]#phpunit--verboseHeadersTest.phpPHPUnit3.6.10bySebastianBergmann.ETime:0seconds,Memory:2.25MbTherewas1error:1)HeadersTest::testHeadersCannotmodifyheaderinformation-headersa
有没有办法为不同的输入参数定义不同的模拟期望?例如,我有一个名为DB的数据库层类。此类具有称为“Query(string$query)”的方法,该方法在输入时采用SQL查询字符串。我可以为这个类(DB)创建模拟并为取决于输入查询字符串的不同查询方法调用设置不同的返回值吗? 最佳答案 如果可以避免使用at()并不理想,因为astheirdocsclaimThe$indexparameterfortheat()matcherreferstotheindex,startingatzero,inallmethodinvocationsfor
我发现Doyoutestprivatemethod上的讨论内容丰富。我已经决定,在某些类中,我希望有protected方法,但要测试它们。其中一些方法是静态的和简短的。因为大多数公共(public)方法都使用它们,所以我以后可能可以安全地删除测试。但是为了从TDD方法开始并避免调试,我真的很想测试它们。我想到了以下几点:MethodObject根据ananswer中的建议这似乎有点过头了。从公共(public)方法开始,当更高级别的测试给出代码覆盖率时,将它们保护起来并删除测试。继承具有可测试接口(interface)的类,将protected方法公开最佳做法是什么?还有什么吗?看起来