PHPUnitを実行するにあたり、テスト対象のファイルは読み込まれていますか?
テスト対象を読み込むにはbootstrap
属性が使えます。
この属性は、テストが実行される前に読み込まれるブートストラップスクリプトを設定します。このスクリプトは通常、テスト対象のコードをロードするために使用される オートローダーコールバックを登録するだけです。
Like!
PHPUnitを用いて自作関数のテストを行いたいです。
./vendor/bin/phpunit
を実行すると、関数が定義されていないというエラーが出てきます。
$ ./vendor/bin/phpunit
PHPUnit 9.5.21 #StandWithUkraine
E 1 / 1 (100%)
Time: 00:00.005, Memory: 6.00 MB
There was 1 error:
1) Tests\FlatTest::testFlat
Error: Call to undefined function Functions\flat()
/var/www/html/tests/FlatTest.php:16
ERRORS!
Tests: 1, Assertions: 0, Errors: 1.
<?php
declare(strict_types=1);
namespace Functions;
function flat(array $array, int $depth = 0)
{
// 内容は省略
}
<?php
declare(strict_types=1);
namespace Tests;
use function Functions\flat;
use PHPUnit\Framework\TestCase;
class FlatTest extends TestCase
{
public function testFlat(): void
{
$input = [1, 2, 3, 4, 5];
$expected = [1, 2, 3, 4, 5];
$actual = flat($input);
$this->assertSame($expected, $actual);
}
}
PHP 8.1
PHPUnit 9.5.21
PHPUnitを実行するにあたり、テスト対象のファイルは読み込まれていますか?
テスト対象を読み込むにはbootstrap
属性が使えます。
この属性は、テストが実行される前に読み込まれるブートストラップスクリプトを設定します。このスクリプトは通常、テスト対象のコードをロードするために使用される オートローダーコールバックを登録するだけです。
@sayuprc
Questionercomposer.jsonのautoload > filesに対象のファイルパスを記述することで正常に動作しました。
今回のテスト対象のファイルが、クラスファイルではなかったため、PSR-4の項目に設定が書いてあっても、ロードされていないのが原因でした。
{
"autoload": {
"files": ["src/flat.php"] // これを追記
}
}