我想开始为我的代码编写测试,所以我使用以下命令安装了最新的 PHPUnit
wget http://pear.phpunit.de/get/phpunit.phar
chmod +x phpunit.phar
mv phpunit.phar /usr/local/bin/phpunit
http://phpunit.de/manual/3.8/en/installation.html
然后我将/usr/local/bin 添加到我的 php.ini 包含路径,如下所示
include_path = ".:/Applications/MAMP/bin/php/php5.4.10/lib/php:/usr/local/bin"
但是当我访问 /my-app/test.php
Warning (2): include(PHPUnit/Autoload.php): failed to open stream: No such file or directory [CORE/Cake/TestSuite/CakeTestSuiteDispatcher.php, line 150]
Warning (2): include() [function.include]: Failed opening 'PHPUnit/Autoload.php' for inclusion (include_path='/Users/DevinCrossman/Sites/studio-bliss/lib:.:/Applications/MAMP/bin/php/php5.4.10/lib/php:/usr/local/bin') [CORE/Cake/TestSuite/CakeTestSuiteDispatcher.php, line 150]
我尝试将 /usr/local/bin/phpunit 更改为 /usr/local/bin/PHPUnit 但这没有用。我还尝试将包含路径从 /usr/local/bin 更改为 /usr/local/bin/phpunit 并重新启动 apache(我在这台机器上使用 MAMP PRO但它在我的 ubuntu 服务器上也不起作用)
phpinfo() 显示包含路径设置正确。
这可能是我错过的明显的东西。谁能告诉我为什么这不起作用?
最佳答案
CakePHP recommends using PEAR to install PHPUnit .它应该更适合您的情况。
将文件名为“phpunit”的 phar 放入/usr/local/bin 意味着通过运行 PHPUnit's testrunner via the command line 来使用因为它将使 phpunit 命令可用。例如运行命令:
phpunit MyTest test.php
在浏览器中运行时,您需要可用于加载的 PHPUnit 类,仅通过在包含路径中包含指向您的 phar 的路径是行不通的。 我不确定,但如果您在测试文件中包含 phar,它可能会起作用:
require_once '/path/to/phpunit.phar'
关于php - 麻烦包括 PHPUnit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18392089/
我想编写一个ruby脚本来递归复制目录结构,但排除某些文件类型。因此,给定以下目录结构:folder1folder2file1.txtfile2.txtfile3.csfile4.htmlfolder2folder3file4.dll我想复制这个结构,但不包含.txt和.cs文件。因此,生成的目录结构应如下所示:folder1folder2file4.htmlfolder2folder3file4.dll 最佳答案 您可以使用查找模块。这是一个代码片段:require"find"ignored_extensions=[".cs"
我想写一点“Deprecate-It”库并经常使用“method_added”回调。但是现在我注意到在包含模块时不会触发此回调。是否有任何回调或变通方法,以便在某些内容包含到自身时通知类“Foobar”?用于演示的小Demo:#IncludingModulswon'ttriggermethod_addedcallbackmoduleInvisibleMethoddefinvisible"Youwon'tgetacallbackfromme"endendclassFoobardefself.method_added(m)puts"InstanceMethod:'#{m}'addedto'
我有一个正则表达式来获取"*"之间的所有内容:str="Donecsedodiodui.*Nullamiddoloridnibhultriciesvehiculaut*"str.match(/\*(.*)\*/)[1]我希望匹配能够包含换行符。我该怎么做? 最佳答案 您需要使用允许点匹配新行的m选项:Donecsedodiodui.*Nullamiddoloridnibhultriciesvehiculaut*regexstr.match(/\*(.*)\*/m)[1]实例:http://www.rubular.com/r/11u9
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它
有没有办法在ruby中生成介于1-100但不包括20、30和40之间的随机数?我可以做类似的事情defrandom_numberrandom_number=rand(100)whilerandom_number==20||30||40random_number=rand(100)endreturnrandom_numberend...但这似乎不是很有效(再加上那个特定的例子可能根本行不通)。有没有更简单的方法?任何帮助深表感谢! 最佳答案 创建一个1到100的数组。从该数组中删除不需要的元素。然后从数组中选择一个随机数。([*1
我正在使用ARincludes在对象User和Building之间执行LEFTOUTERJOIN的方法,其中User可能有也可能没有Building关联:users=User.includes(:building).references(:buildings)因为我正在使用references,任何关联的Building对象都将被预先加载。我的期望是我随后能够遍历用户列表,并检查用户是否有与其关联的建筑物而不会触发额外的查询,但实际上每当我尝试访问建筑物属性时我都会看到对于没有建筑物的用户,AR会进行另一个SQL调用以尝试检索该建筑物(尽管在后续尝试中它只会返回nil)。这些查询显然是
在ruby中,begin#...rescue#...end不会捕获不是StandardError子类的异常。在C中,rb_rescue(x,Qnil,y,Qnil);VALUEx(void){/*...*/returnQnil;}VALUEy(void){/*...*/returnQnil;}会做同样的事情。我如何从rubyC扩展中rescueException=>e(而不仅仅是rescue=>e)? 最佳答案 Ruby需要更多文档。我不得不进入ruby源代码,这是我发现的:VALUErb_rescue(VALUE(*b_p
进行这种深度检查的最佳方法是什么:{:a=>1,:b=>{:c=>2,:f=>3,:d=>4}}.include?({:b=>{:c=>2,:f=>3}})#=>true谢谢 最佳答案 我想我从那个例子中明白了你的意思(不知何故)。我们检查子哈希中的每个键是否在超哈希中,然后检查这些键的对应值是否以某种方式匹配:如果值是哈希,则执行另一次深度检查,否则,检查值是否相等:classHashdefdeep_include?(sub_hash)sub_hash.keys.all?do|key|self.has_key?(key)&&ifs
我有一个在模块中定义的类。moduleModclassZedincludeDataMapper::Resourceendend为了测试,我定义了工厂。#/factories/zed.rbFactoryGirl.definedofactory:zeddo#codeendend但是当我开始测试时出现错误。describe'Zed'doit"shouldhave..."doFactoryGirl.create(:zed)endend错误:Failure/Error:FactoryGirl.create(:zed)NameError:uninitializedconstantZed如何测试包含
我到处寻找优雅的解决方案。本质问题似乎是映射到数据库列的ActiveRecord属性在ActiveRecord::Base中的处理方式与attr_accessor方法完全不同。我想做这样的事情:model.attribute_names.eachdo|name|#dostuffend在某种程度上也包括attr_accessor字段,但不包括任何其他实例方法。我知道这不是内置的,但最优雅的方法是什么? 最佳答案 你无法真正解决这个问题。您可以近似破解,但它永远不会很好地工作。model.attribute_names应该给你所有的Ac