我刚刚开始在一些现有代码上试用phpunit。我们使用的命名约定是MyClass类应该在MyClass.class.php中。 PHPUnit似乎要求该文件应该被称为MyClass.php。
有什么方法吗?
我在尝试生成骨架测试类时注意到了它:
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
答案 0 :(得分:7)
它不是一个要求,它只是假设。您可以编写自己的测试用例。
Skeleton只是模拟一个“简单的方法”,为你的所有类虚拟函数创建虚函数。
另外,
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.
所以通过这个推理,如果你不告诉它该类在哪个文件中,它会尝试猜测,如果你确实告诉它该类所在的文件,它就不会猜到。
答案 1 :(得分: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的文档提到了命名空间,但只显示了一个反斜杠。希望这有助于某人。