web-dev-qa-db-ja.com

PHPUnitでTDDを試す

Drupal 8で組み込みのテスト駆動開発メソッドを試していますが、問題が発生しています。

CLIで./core/vendor/bin/phpunit --list-groups ./modules/を実行しようとすると、次のエラーが発生します。

PHPの致命的なエラー:10行目の/Applications/MAMP/htdocs/drupal/modules/custom_cookie_compliance/tests/CustomCookieComplianceTest.phpにクラス 'Drupal\Tests\UnitTestCase'が見つかりません

致命的なエラー:クラス10の/ Applications/MAMP/htdocs/drupal/modules/custom_cookie_compliance/tests/CustomCookieComplianceTest.phpにクラス 'Drupal\Tests\UnitTestCase'が見つかりません

私のモジュールフォルダーにcustom_cookie_complianceというモジュールフォルダーを作成しました。次に、以下を含むcustom_cookie_compliance.info.ymlファイルがあります。

 name: Custom Cookie Compliance
 description: Displays a cookie compliance information window at the top of the website.
 core: 8.x
 type: module

testsフォルダーにsrcフォルダーが含まれ、さらに次のコードを含むCustomCookieComplianceTest.phpファイル。

<?php
namespace Drupal\custom_cookie_compliance\Tests;

use Drupal\Tests\UnitTestCase;

/**
 * @group cookie
 */

class CustomCookieComplianceTest extends UnitTestCase {
  public function testSetCookies() {
    if (!isset($cookie_set)) {
      $cookie_set = TRUE;
    }

    $this->assertTrue($cookie_set);
  }
}

このガイド に従ってコードを記述しました。

UnitTestCaseクラスが見つからないことは理解していますが、ガイドはそれでうまくいくはずなので、なぜそうではないのですか?

8
jzasnake

私の推測では、コアフォルダーにあるphpunit.xml.distファイルは含まれていません。

そこからテストを実行するか(./vendor/bin/phpunit ../modules/your_module)、またはそのファイルを-cで指定します。

独自のphpunit.xml.distファイルを提供することもできます(例としてPaymentモジュールを参照)。その後、モジュールフォルダーからPHPUnitを実行できます。

11
Berdir

今日、同じ問題に遭遇し、古いバージョンのPHP Unitを使用していることに気付きました。最新にアップグレードした後、テストは機能しました。

0
albertski