2008-11-14 44 views
3

我刚开始尝试一些现有的代码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 

回答

7

它不是必需的,它只是想当然。你可以编写你自己的测试用例。

骨架只是一个模拟“简单的方法”,为所有类虚拟函数制作虚拟函数。

此外,

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. 

因此通过这种推理,如果你不告诉它的类是什么在它的文件会尝试猜测,如果你不告诉它的类是什么文件,它不会猜。

+0

谢谢。如果我有大脑,我会很危险。 – 2008-11-14 11:06:35

0

当运行命名空间的骨骼类时,我碰到类似的问题。我从命令行使用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的文档提到命名空间,但只显示一个反斜杠。希望这可以帮助某人。