PHPUnit文件更新约定
问题描述:
我刚开始尝试一些现有的代码phpunit。我们使用的命名约定是MyClass类应该在MyClass.class.php中。 PHPUnit似乎要求该文件应该被称为MyClass.php。PHPUnit文件更新约定
有没有办法解决这个问题?
我注意到了这一点,而试图生成一个框架测试类:
phpunit --skeleton-test MyClass.class
PHPUnit 3.3.4 by Sebastian Bergmann.
Could not find class "MyClass.class" in "/home/jd/skeleton/classes/MyClass.class.php".
Fatal error: Call to a member function getOutClassName() on a non-object in /usr/share/php/PHPUnit/TextUI/Command.php on line 470
答
它不是必需的,它只是想当然。你可以编写你自己的测试用例。
骨架只是一个模拟“简单的方法”,为所有类虚拟函数制作虚拟函数。
此外,
phpunit --skeleton-test MyClass MyClass.class.php
可能会做你想要什么。
Usage: phpunit [switches] UnitTest [UnitTest.php]
phpunit [switches] <directory>
--skeleton-class Generate Unit class for UnitTest in UnitTest.php.
--skeleton-test Generate UnitTest class for Unit in Unit.php.
因此通过这种推理,如果你不告诉它的类是什么在它的文件会尝试猜测,如果你不告诉它的类是什么文件,它不会猜。
答
当运行命名空间的骨骼类时,我碰到类似的问题。我从命令行使用phpunit 3.5.6。 phpUnit文档示例对我无效,我无法在网上找到答案,所以我想我在这里分享它。假设你在目录/ my/dir中有类Foo,并且它在单个文件Foo.php中声明,所以类文件的完整路径是/my/dir/Foo.php
另外假设Foo声明如下:
<?php
namespace my\space;
class Foo
{
...
}
为了生成测试骨架我确信我是在Foo.php所在的目录,然后我跑到下面的命令:
user[/my/dir]$ phpunit --skeleton-test my\\dir\\Foo Foo.php
这引起了我的骨架来产生。关键是逃避反斜杠,因为phpUnit的文档提到命名空间,但只显示一个反斜杠。希望这可以帮助某人。
谢谢。如果我有大脑,我会很危险。 – 2008-11-14 11:06:35