在Phpunit中,调用扩展TestCase的类而不是原来的TestCase不起作用



在Phpunit的上下文中,我已经在我的Test类中添加了一些函数,我计划在其他测试中重用。

我的计划是在tests文件夹中有另一个类来继承。类将继承经典TestCase并添加我的额外方法。我没有得到任何错误在IDE,但Phpunit找不到自定义类和崩溃与错误消息。

我试着把它放在Trait中。

与此同时,我正在测试是否可以创建一个"用户"。类在同一文件夹,我能够实例化它很好,所以我停止调整命名空间,因为它似乎不是问题。我最终创建了一个具有静态方法和静态调用方法的类。

但是我很好奇为什么它是那样的行为。这是我第一次遇到这种情况。我可以在文件中实例化类,但不能扩展或使用它们作为trait。

这是我试图让我的测试继承的类:

<?php
use PHPUnitFrameworkTestCase as BaseTestCase;
class TestCase extends BaseTestCase
{
public static function doSomething($params)
{
// ...
}
}
下面是调用它的测试类:
<?php
use ModelCourse;
//use PHPUnitFrameworkTestCase;
class CourseTest extends TestCase

public function setUp(): void
{
$this->student = new Student();
}
}

按照@hakre提供的链接,我一直在摆弄作曲器自动加载和命名空间,像这样:

"autoload-dev": {
"psr-4": { "Tests\": "tests/" }
},

然后

"autoload-dev": {
"psr-4": { "": "tests/" }
},

我已经相应地改变了自定义TestCase类的名称空间(添加"Test/")名称空间)。我尝试在不更改CourseTest的名称空间的情况下进行测试,但无济于事。唯一的区别是当我链接"空"的时候名称空间到自动加载的测试目录,学生类被识别并在CourseTest中实例化,只要我让它扩展标准Phpunit TestCase类,一旦我让它扩展我的自定义TestCase类,我就会再次出现以下错误:

Class "TestCase" not found in phar://G:/dev/phpbin/phpunit-9.5.10.phar/phpunit/TextUI/Command.php:95

我的类和它的父类一样被命名为TestCase。我认为Test类必须继承另一个Test类,这样就足够了。对于phpunit来说,一个类继承另一个类是不够的。

父类名需要以"Test.php"结尾。后缀。好吧,我没有意识到它也使用自己的方法来调用父类…但我发现的另一件事,真的让我很惊讶。

首先我认为一些保留的类名是不允许的。比如Test或ParentTest。我还尝试了不太明显的奇怪类名,这也是不允许的。

有些名字起作用了,比如CaseTest或CommonTest,其他的不起作用,在几次尝试之后,我得出了一个结论,我不知道该怎么做。

似乎只有以字母A、B或C开头并以"Test"结尾的类名工作。test, BTest, CTest, ClassTest, CTest, AllowedTest, BadTest将工作。我无法使任何其他类名工作…

也许有更多,但我测试了其他的,如p, X, Y和Z,他们没有。

相关内容

  • 没有找到相关文章

最新更新