我刚刚开始在一些现有代码上试用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
有帮助吗?

解决方案

它不是一个要求,它只是假设。您可以编写自己的测试用例。

骷髅只是模拟一个<!>“简单方法<!>”;这使得所有类虚函数都具有虚函数。

另外,

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的文档提到了命名空间,但只显示了一个反斜杠。希望这有助于某人。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top