3

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

2 回答 2

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.

所以根据这个推理,如果你不告诉它类在哪个文件中,它会尝试猜测,如果你告诉它类在哪个文件中,它不会猜测。

于 2008-11-14T10:50:40.760 回答
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 的文档提到了命名空间,但只显示了一个反斜杠。希望这可以帮助某人。

于 2011-01-31T16:13:14.680 回答