概要
本稿はLando環境に構築したDrupalにおいてPHPUnitテストを実施する方法について紹介していきます。
3~4回ほどのシリーズになる予定です。
今回は、Drupal環境でPHPUnitコマンドを実行するところまでの手順を紹介します。
PHPUnitの細かいセットアップや、カスタムモジュールでテストコードを自作する方法などは筆者もまだよく理解していません。
勉強したら次回以降紹介するつもりです。
要約
- Drupalで自動テストやってみたい!
- とにかく動かしてみよう。
- 動いた!←今回ここまで。
環境情報
- Mac Apple M1:12.6.3
- Composer:2.3.10
- Lando:v3.11.0
- Drupal:10
作業内容
Landoのインストールします
本題ではないので割愛します、詳しくは以下の参考資料をご覧ください。
Drupalを構築します
Druaplプロジェクトを作成します。
% composer create-project drupal/recommended-project phpunittest
% cd phpunittest
Lando用構成ファイルを作成します
% vi .lando.yml
以下の内容をコピペしてください。
name: phpunittest
recipe: drupal10
config:
webroot: web
php: 8.1
via: apache:2.4
database: mysql:5.7
services:
appserver:
build_as_root:
- pecl install uploadprogress
- docker-php-ext-enable uploadprogress
overrides:
environment:
SIMPLETEST_BASE_URL: "http://phpunittest.lndo.site//"
SIMPLETEST_DB: "mysql://drupal10:drupal10@database/drupal10"
BROWSERTEST_OUTPUT_DIRECTORY: "/app/phpunit-results"
tooling:
test:
service: appserver
cmd: "php /app/vendor/bin/phpunit --verbose -c /app/web/core/phpunit.xml.dist"
tooling > test
および、overrides > environment
以下の項目が今回PHPUnitを実行するための記述です。
詳細は次回以降紹介します。
PHPUnit実行結果の出力先ディレクトリを作成しておきます。
% mkdir phpunit-results
Landoコマンドで仮想環境をビルドします
% lando start
ビルドが成功すると以下のような出力結果が得られます。
*出力結果の抜粋です。
APPSERVER URLS https://localhost:60393
http://localhost:60394
http://phpunittest.lndo.site/
https://phpunittest.lndo.site/
PHPUnitを使うためdrupal/core-dev
をインストールしておきます。
% lando composer require --dev "drupal/core-dev:^10"
このパッケージをインストールすると、PHPUnitコマンドもインストールされます。ls vendor/bin/
で確認すると出力結果にphpunit
が含まれていると思います、これがPHPUnitの実行ファイルです。
動作確認用に「Examples for Developers」モジュールと、何かと便利なDrushをインストールします。
% lando composer require drupal/examples:^4.0 drush/drush
ブラウザでhttp://phpunittest.lndo.site/
にアクセスし、Drupalの初期インストールをしておきます。
*インストール手順は割愛します。
*DB情報はlando info
コマンドのservice: 'database'
の項目を確認してください。
Drupalの初期インストールが完了したら、このセクションは作業完了です。
PHPUnitテストを実行してみる
PHPUnitコマンドが実行できるか確認してみましょう。
% lando test --version
以下のようなメッセージが出力されました。
PHPUnitの実行自体はできるようです!
PHPUnit 9.6.7 by Sebastian Bergmann and contributors.
次に、インストールしておいた「Examples for Developers」モジュールを有効化します。
% lando drush en examples
Unitテストをディレクトリ指定で実行してみましょう。
% lando test web/modules/contrib/examples/modules/menu_example
以下のようなメッセージが出力されました。
PHPUnit 9.6.7 by Sebastian Bergmann and contributors.
Runtime: PHP 8.1.18
Configuration: /app/web/core/phpunit.xml.dist
Testing /app/web/modules/contrib/examples/modules/menu_example
. 1 / 1 (100%)
Time: 00:13.413, Memory: 8.00 MB
OK (1 test, 13 assertions)
HTML output was generated
http://phpunittest.lndo.site/sites/simpletest/browser_output/Drupal_Tests_menu_example_Functional_MenuExampleTest-36-50508486.html
http://phpunittest.lndo.site/sites/simpletest/browser_output/Drupal_Tests_menu_example_Functional_MenuExampleTest-37-50508486.html
・・・似たような内容が30行ほど続いたので中略・・・
http://phpunittest.lndo.site/sites/simpletest/browser_output/Drupal_Tests_menu_example_Functional_MenuExampleTest-69-50508486.html
http://phpunittest.lndo.site/sites/simpletest/browser_output/Drupal_Tests_menu_example_Functional_MenuExampleTest-70-50508486.html
テスト実行ができました! テスト結果も「OK」とでているので、動作も問題なさそうです!
以上で本稿の目的は達成できました!
次回以降、(勉強して)紹介する項目
- PHPUnitコマンドの使い方、オプションなど
- Lando構成ファイルのPHPUnitに関する記述の意味
- テスト結果の読み方
- テストコードの書き方
- Unitテストだけでなく、ブラウザテストができるらしいのでそのやり方
参考
- 閲覧数 135
コメントを追加