Help us understand the problem. What is going on with this article?

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

はじめに

会社でテスト駆動開発の輪読会をやることになり、
あわせて書籍の中に出てくるコード(書籍内では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
nagaakihoshi
ユアマイスター株式会社でCTOをやっています。ポエムがち。 https://twitter.com/inase17000 http://yourmystar-engineer.hatenablog.jp/
https://yourmystar.jp
yourmystar
サービス産業のIT化プラットフォーム「ユアマイスター」と大切なものをもっと大切にするメディア「ユアマイスター スタイル」を運営するスタートアップです。
http://corp.yourmystar.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした