【问题标题】:Trait PHPUnit\DbUnit\TestCaseTrait not found?未找到特征 PHPUnit\DbUnit\TestCaseTrait?
【发布时间】:2017-07-28 01:35:29
【问题描述】:

升级到 PHP7.1.2 和 PHPUnit 6.0.8(分别从源代码编译并下载 phar)后,我之前扩展 PHPUnit_Extensions_Database_TestCase 的测试不再起作用,而且看起来 (in the docs) 我应该使用特征而是。

所以,使用这样的类声明运行我的测试:

class FooTest extends PHPUnit_Extensions_Database_TestCase

以前可以工作,但现在改成:

use PHPUnit\Framework\TestCase;
use PHPUnit\DbUnit\TestCaseTrait;

class FooTest extends TestCase
{
    use TestCaseTrait;

导致以下错误:

Fatal error: Trait 'PHPUnit\DbUnit\TestCaseTrait' not found in /path/to/FooTest.php on line 17

我在这里错过了什么?

【问题讨论】:

    标签: php phpunit php-7.1


    【解决方案1】:

    您错过了这样一个事实,即从版本 6 开始,DbUnit 不再捆绑在 PHPUnit 的 PHAR 分发中(请参阅https://github.com/sebastianbergmann/phpunit/blob/6.0/ChangeLog-6.0.md#removed)。

    请查看https://github.com/sebastianbergmann/dbunit#php-archive-phar,了解有关如何立即使用 DbUnit 的信息。

    【讨论】:

    • 就是这样。文档需要更新,他们仍然说“phar 包含您需要的所有依赖项”。 (哇!Sebastian Bergmann 回答了!)我将为需要更新的页面打开 github 票。
    • 嗯,DbUnit 不是必需的依赖项。所以不需要。
    • 如果 DbUnit 不是必需的依赖项,请提出替代方案:另一个库,否则,什么? (它是必需的,但不是依赖项)
    • TL;DR:没有(官方)替代品。可以在这里找到更长的讨论:github.com/sebastianbergmann/dbunit/issues/217
    【解决方案2】:

    如果您在 PHP5.6 (DbUnit 1.3) 中遇到此问题,请

    use PHPUnit_Extensions_Database_TestCase_Trait;
    

    而不是

    use TestCaseTrait;
    

    【讨论】:

    • 这是不正确的(或者,至少,非常过时)。当前版本的正确使用声明是use PHPUnit\DbUnit\TestCaseTrait;。您可能还应该阅读以前的答案。 PHPUnit 和 DBUnit 的作者已经在上面回答了这个问题。另见:phpunit.readthedocs.io/en/7.3/…
    • 我知道,而且我用的是PHP5.6,作者的回答并没有解决我的问题。第一次没有提到PHP的版本是我的错。但也许另一个人也在维护一个过时的项目,他也可能遇到这个问题。
    • 删除了反对票,因为这是合理的。然而,需要注意的是,在撰写本文时,PHP 5.6 在 1 年 8 个月前失去了积极支持,并将在 3 个月(2018 年 12 月)后失去安全更新。 PHPUnit 很久 之前就失去了对本评论中提到的版本的支持。参考:secure.php.net/supported-versions.php
    猜你喜欢
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 2018-09-17
    • 2015-06-19
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多