为扩展另一个类的类编写PHPUnit测试会产生一个';未找到类';错误

为扩展另一个类的类编写PHPUnit测试会产生一个';未找到类';错误,php,oop,testing,phpunit,fatal-error,Php,Oop,Testing,Phpunit,Fatal Error,我所拥有的: WPKit/Module/AbstractFunctions.phpAbstract类 wp content/themes/mytheme/modules/quick/Functions.php: use WPKit\Module\AbstractFunctions; class Functions extends AbstractFunctions { ... } wp content/themes/mytheme/tests/quick/QuizFunctionsTest.

我所拥有的:

  • WPKit/Module/AbstractFunctions.php
    Abstract类
  • wp content/themes/mytheme/modules/quick/Functions.php
    use WPKit\Module\AbstractFunctions;
    class Functions extends AbstractFunctions { ... }
    
  • wp content/themes/mytheme/tests/quick/QuizFunctionsTest.php

    require_once dirname(__FILE__) . "/../../modules/quiz/Functions.php";
    
    class QuizFunctionsTest extends TestCase {
        public function testGetQuizByID() {
            # some code
        }
    }
    
  • 运行
    phpunit QuizFunctionsTest.php
    时,会出现以下错误:

    PHP致命错误:在第18行的%path%/modules/quick/Functions.PHP中找不到类“%path%\AbstractFunctions”


    我试过一次
    require\u
    缺少的类,但没有帮助。在测试类之外,我的代码工作得很好。有什么想法吗?

    TL;DR:我似乎无法让它工作,因为它是一个WordPress设置,所以我所做的就是通过
    wget
    安装PHPUnit,并使用WP-CLI构建主题测试,然后它工作得很好


    首先,我在我的主题目录中安装了PHPUnit from终端:

    wget -O phpunit https://phar.phpunit.de/phpunit-7.phar
    chmod +x phpunit
    
    接下来,我安装了WP-CLI:

    curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
    chmod +x wp-cli.phar
    sudo mv wp-cli.phar /usr/local/bin/wp
    
    接下来设置测试套件:

    wp scaffold theme-tests your-theme-slug
    
    bin/install-wp-tests.sh <test-database-name> <user> <password> <host> <wordpress-version>
    
    还要确保已安装
    svn

    在我的例子中(我也发现有人提到了这一点),我不得不删除
    /tmp/wordpress
    /tmp/wordpress tests lib
    ,并重新运行上一个命令两次,因为脚本没有下载所有内容

    请注意,在
    /tmp/WordPress
    中有一个单独的WordPress设置。在我的主要WordPress设置中,我使用存储在WordPress根目录中
    wp content
    附近的WPKit库,因此我必须将它复制到
    /tmp/WordPress
    ,否则我的PHPUnit测试无法找到包含在我必须测试的类中的WPKit文件

    因此,当您运行
    wp scaffold
    时,它会在主题根目录中创建
    bin
    目录。从主题根目录运行以下命令以安装测试套件:

    wp scaffold theme-tests your-theme-slug
    
    bin/install-wp-tests.sh <test-database-name> <user> <password> <host> <wordpress-version>
    
    请确保使用empty数据库,因为每次运行PHPUnit都会清除数据库,因此可能会丢失数据

    完成所有这些操作后,只需运行PHPUnit,您应该会很好:

    ./phpunit
    
    它在
    您的主题/tests
    目录中运行测试。默认情况下,它会忽略默认的测试文件,因此使用它来进行您自己的简单测试,以检查一切是否正常


    资料来源:



    能否请您提供更多信息-1。你是怎么运作的?2.如何在这个
    ../modules/quick/Functions.php
    中导入
    AbstractFunctions
    ?@AlexMozharov我已经扩展了应该回答您的问题的问题hanks,我现在看到您使用名称空间了。我认为这可能会对您有所帮助,您也可以在这里找到一些帮助,但实际上很难说,这取决于您使用的自动加载系统以及phpunit套件的配置。通常,您会为phpunit指定一个引导文件,其中包括vendor/autoload.phpIt,因为它是WordPress安装程序,所以我无法让它工作,所以我所做的是通过wget安装phpunit,并使用WP-CLI构建主题测试,然后它像一个符咒一样工作。