5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

書籍「テスト駆動開発」をPHPで写経するためのDocker環境構築手順

Posted at

はじめに

会社でテスト駆動開発の輪読会をやることになり、
あわせて書籍の中に出てくるコード(書籍内では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
5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?