为什么在yii2框架的根目录中有一个文件夹测试?

为什么在yii2框架的根目录中有一个文件夹测试?,yii2,phpunit,codeception,Yii2,Phpunit,Codeception,它是基本模板。 我使用此命令生成测试文件并运行: $ ./vendor/bin/codecept generate:test unit Example $ ./vendor/bin/codecept run 此文件显示在文件夹/vendor/bin/tests/unit中。 我无法将此文件推送到GitHub。 为什么测试文件出现在供应商文件夹中?如何将测试文件保存在项目根目录下的tests文件夹中 您需要调试路径并解决导致此问题的配置问题 使用的路径设置在文件的第45行:vendor/code

它是基本模板。 我使用此命令生成测试文件并运行:

$ ./vendor/bin/codecept generate:test unit Example
$ ./vendor/bin/codecept run
此文件显示在文件夹/vendor/bin/tests/unit中。 我无法将此文件推送到GitHub。
为什么测试文件出现在供应商文件夹中?如何将测试文件保存在项目根目录下的tests文件夹中

您需要调试路径并解决导致此问题的配置问题

使用的路径设置在文件的第45行:
vendor/codeception/base/src/codeception/Command/GenerateTest.php

在这里,您将看到创建新目录的代码:

$path=$this->createDirectoryFor($config['path'],$class)

$config['path']
的值在文件
vendor/codeception/base/src/codeception/Configuration.php的方法
suiteSettings
第285行中确定

在这里,您将看到以下代码,其中设置了配置的路径:

    $settings['path'] = self::$dir . DIRECTORY_SEPARATOR . $config['paths']['tests']
        . DIRECTORY_SEPARATOR . $settings['path'] . DIRECTORY_SEPARATOR;
在这两行之前添加以下代码:

    echo 'self::$dir ' . print_r(self::$dir, true) . PHP_EOL;
    echo '$config[paths][tests] ' . print_r($config['paths']['tests'], true) . PHP_EOL;
    echo '$settings[path] ' . print_r($settings['path'], true) . PHP_EOL;
    exit;
现在,再次运行命令以执行以下调试代码:

/vendor/bin/codecept生成:测试单元示例

对于我的设置,它使用与您相同的命令在
/public\u html/basic/tests/unit/ExampleTest.php
中生成测试,我看到以下内容:

  • self::$dir
    =>
    /public\u html/basic
  • $config[path][tests]
    =>
    测试
  • $settings[路径]
    =>
    单元

观察-从您的评论中,我看到您的
codeception.yml
文件对于各种测试子目录的默认值是正确的

推荐

$config[paths][tests]
在您的案例中似乎是错误的-调试此问题并根据您的发现解决路径配置问题

请注意,在供应商包中有一个核心codeception.yml,在您的应用程序根目录中也应该有一个,即

  • /public\u html/basic/vendor/codeception/base/codeception.yml

  • /public\u html/basic/codeception.yml


后者中的值优先

并从根目录运行测试文件路径:测试:在codeception.yml文件中设置的值是什么?路径:测试:测试日志:测试/_输出数据:测试/_数据帮助程序:测试/_支持我不能对codeception.yml文件设置错误-这是默认值。。。基本的Yii2对我有用template@drAnton我已经为您发布了一个答案,如果有帮助,请让我知道。如果是这样,请考虑标记作为公认的答案。谢谢