首页 > 解决方案 > PHPUnit 在 GitHub Actions 中无法正常工作。致命错误:未捕获的 Dotenv\Exception\InvalidPathException

问题描述

我正在尝试制作一个 GitHub Actions 工作流程,它将在我的项目中运行我的所有单元测试。每当我推送到我的 CI-CD 测试分支时,它都会给我一个错误,说它无法读取某个位置 [/app/tests/../.env.test] 的任何环境文件。.env.test 位于我项目的根目录中,所以也许这就是问题所在,但我不知道如何解决。工作流程:

name: CI/PHPUnit
on:
  push:
    branches:
      - CI-CD
jobs:
  build-test:
    runs-on: ubuntu-latest
    steps:

      - name: Checkout setup
        uses: actions/checkout@v2


      - uses: php-actions/composer@v5
        with:
          php_version: 7.3
          php_extensions: bcmath

      - name: PHP unit tests with PHPUnit
        uses: php-actions/phpunit@v2
        with:
          configuration: phpunit.xml

但这会给我以下错误:

Run php-actions/phpunit@v2
  with:
    configuration: phpunit.xml
    memory_limit: 256M
    version: latest
    php_version: latest
    test_suffix: Test.php,.phpt

Fatal error: Uncaught Dotenv\Exception\InvalidPathException: Unable to read any of the environment file(s) at [/app/tests/../.env.test]. in /app/vendor/vlucas/phpdotenv/src/Store/FileStore.php:68
Stack trace:
#0 /app/vendor/vlucas/phpdotenv/src/Dotenv.php(222): Dotenv\Store\FileStore->read()
#1 /app/tests/bootstrap.php(14): Dotenv\Dotenv->load()
#2 /app/tests/Unit/UnitTestCase.php(19): require('/app/tests/boot...')
#3 phar:///usr/local/bin/phpunit/phpunit/Framework/TestBuilder.php(76): Ella\Tests\Unit\UnitTestCase->__construct()
#4 phar:///usr/local/bin/phpunit/phpunit/Framework/TestBuilder.php(64): PHPUnit\Framework\TestBuilder->buildTestWithoutData('Ella\\Tests\\Unit...')
#5 phar:///usr/local/bin/phpunit/phpunit/Framework/TestSuite.php(680): PHPUnit\Framework\TestBuilder->build(Object(ReflectionClass), 'testCanAddOrder...')
#6 phar:///usr/local/bin/phpunit/phpunit/Framework/TestSuite.php(193): PHPUnit\Framework\TestSuite->addTestMethod(Object(ReflectionClass), Object(ReflectionMethod))
#7 phar:///usr/local/bin/phpunit/phpunit/Framework/TestSuite.php(281): PHPUnit\Framework\TestSuite->__construct(Object(ReflectionClass))
#8 phar:///usr/local/bin/phpunit/phpunit/Framework/TestSuite.php(377): PHPUnit\Framework\TestSuite->addTestSuite(Object(ReflectionClass))
#9 phar:///usr/local/bin/phpunit/phpunit/Framework/TestSuite.php(394): PHPUnit\Framework\TestSuite->addTestFile('/app/tests/Unit...')
#10 phar:///usr/local/bin/phpunit/phpunit/TextUI/TestSuiteMapper.php(56): PHPUnit\Framework\TestSuite->addTestFiles(Array)
#11 phar:///usr/local/bin/phpunit/phpunit/TextUI/Command.php(304): PHPUnit\TextUI\TestSuiteMapper->map(Object(PHPUnit\TextUI\XmlConfiguration\TestSuiteCollection), '')
#12 phar:///usr/local/bin/phpunit/phpunit/TextUI/Command.php(103): PHPUnit\TextUI\Command->handleArguments(Array)
#13 phar:///usr/local/bin/phpunit/phpunit/TextUI/Command.php(93): PHPUnit\TextUI\Command->run(Array, true)
#14 /usr/local/bin/phpunit(1119): PHPUnit\TextUI\Command::main()
#15 {main}

这是我的配置文件(phpunit.xml):

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="vendor/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
>
    <testsuites>
        <testsuite name="unit">
            <directory suffix=".php">tests/Unit</directory>
        </testsuite>
    </testsuites>
</phpunit>

如果有人知道解决这个问题,我会很高兴。

标签: phpunit-testingphpunitgithub-actionsphpdotenv

解决方案


推荐阅读