PHP 8.2 + PHPUnit 10 の環境をDockerで構築し、TDDでコーディング練習ができるプロジェクトです。
- Docker
- Docker Compose
# 依存関係インストール
docker compose run --rm php composer install# 全問題のテストを実行
docker compose run --rm php vendor/bin/phpunit
# 特定の問題のみ実行
docker compose run --rm php vendor/bin/phpunit --testsuite problem01.
├── docker/
│ └── php/
│ └── Dockerfile
├── docker-compose.yml
├── composer.json
├── phpunit.xml
└── problems/
└── problem01/ # 問題01: 注文サービス
├── src/
│ ├── OrderStatus.php
│ ├── OrderItem.php
│ ├── InMemoryProductCatalog.php
│ ├── Order.php
│ └── OrderService.php
└── tests/
└── OrderServiceTest.php
problems/problemXX/ディレクトリを作成src/とtests/を配置composer dump-autoloadを実行phpunit.xmlに testsuite を追加(個別実行用)
# 例: problem02 を追加
mkdir -p problems/problem02/{src,tests}
docker compose run --rm php composer dump-autoloadphpunit.xml に以下を追加:
<testsuite name="problem02">
<directory>problems/problem02/tests</directory>
</testsuite>実行:
docker compose run --rm php vendor/bin/phpunit --testsuite problem02- 解きたい問題の
src/配下のファイルを削除または空にする - テストが失敗することを確認
- テストが通るように最小限の実装を行う(TDD)
- すべてのテストがグリーンになれば完了
# 例: problem01 を練習
rm problems/problem01/src/*.php
docker compose run --rm php vendor/bin/phpunit --testsuite problem01
# テストが失敗する → 実装する → 再度テスト