はじめに
会社でテスト駆動開発の輪読会をやることになり、
あわせて書籍の中に出てくるコード(書籍内ではJavaで記述されている)をPHPで写経して理解を深めようと考えていました。
この勉強会のためだけに、自分のMacにcomposerをインストールするのは嫌だったので、
使い捨てのコンテナでcomposerおよびphpunitを動かす方法を調べました。
同じことを考える人が少なくとも10人くらいはいると思うので、記録に残しておきます。
対象の方
- 環境構築に時間をかけずに、さっさとPHPで書籍「テスト駆動開発」の写経をはじめたい方
前提条件
- PHPおよびPHPUnitで写経したい
- ローカルPCにcomposerをインストールしたくない
- ローカルPCにDockerをインストール済み
各種バージョン
PHP 7.4.7
PHPUnit 9.2.5
Composer version 1.10.7
手順
ご自身の環境にあわせて、適当なディレクトリを作り、手順を開始してください。
composer.json の作成
docker run --rm -it -v $PWD:/app composer:latest composer init
ls
# composer.json
phpunit のインストール
docker run --rm -it -v $PWD:/app composer:latest composer require --dev phpunit/phpunit
ls
# composer.json composer.lock vendor
コード用ディレクトリ作成
mkdir src
mkdir test
ls
# composer.json composer.lock src test vendor
composer.json に autoload の記載を追加
vi composer.json
記述例は以下の通りです。
{
"name": "root/app",
"require": {},
"require-dev": {
"phpunit/phpunit": "^9.2"
},
"autoload": {
"psr-4": { "App\\": "src" }
}
}
composer dump-autoload の実行
docker run --rm -it -v $PWD:/app composer:latest composer dump-autoload
ls vendor/autoload.php
# autoload.php ファイルが作成されていることを確認する
phpunit.xml の作成
vi phpunit.xml
<?xml version="1.0" encoding="UTF-8" ?>
<phpunit colors="true"
verbose="true"
bootstrap="vendor/autoload.php">
<testsuites>
<testsuite name="Sample">
<directory>test</directory>
</testsuite>
</testsuites>
</phpunit>
テストコード、テスト対象コードを書く
phpunit 実行
docker run --rm -it -v $PWD:/app composer:latest vendor/bin/phpunit