0
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.

Docker で phpunit を実行する

Posted at

php のテスティングフレーワークに phpunit がある。テスト環境は開発マシンに依存させず、簡単に構築できるようにしたいため docker を使って用意できるか試してみた。今回は、Dockerfile と composer を使って phpunit の実行環境を作ってみた。

Dockerfile で composer をインストール

phpunit は composer を使ってインストールするため、まずは docker container に composer をインストールしておく。インストールの仕方は、composer の公式にかかれているmulti-stage builds を使ってインストールする。

Dockerfileの中身

FROM php:7.2-cli

ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin
# composer のインストール
COPY --from=composer /usr/bin/composer /usr/bin/composer

RUN apt-get update -yqq \
    && apt-get install git zlib1g-dev libsqlite3-dev -y \
    && docker-php-ext-install zip \
    && docker-php-ext-install pdo_mysql

WORKDIR /var/www

composer で phpunit をインストールする

phpunit を composer を使ってインストールする。

docker イメージの作成

先ほど作った Dockerfile からイメージを作成する。

docker build . -t php:composer

ホストディレクトリをマウントして container を起動する

ホストディレクトリをマウントして起動させる理由は、作成したコードとテストコードを container 内で実行できるようにするため。

docker run -it --rm -v $(pwd):/var/www php:composer /bin/bash

phpunit をインストールする

phpunit をインストールしましょう。composer.json を用意していたら composer install でインストールしましょう。

composer require --dev phpunit/phpunit

composer.json を使用する場合は下記の内容を記述し、composer installを実行

{
    "require-dev": {
        "phpunit/phpunit": "^8.4"
    }
}

phpunit を実行する

実際に動くか試すため下記のコードを用意する

<?php
require('vendor/autoload.php');
use PHPUnit\Framework\TestCase;
class UserTest extends TestCase {
    public function testExample() {
        $expected = 'hoge';
        $this->assertEquals($expected, 'hoge');
    }
}

下記のコマンドからテストを実行する

vendor/bin/phpunit test.php

出力

root@4b1af08e1cd8:/var/www# vendor/bin/phpunit test.php 
PHPUnit 8.4.3 by Sebastian Bergmann and contributors.

.                                                                   1 / 1 (100%)

Time: 257 ms, Memory: 4.00 MB

OK (1 test, 1 assertion)
root@4b1af08e1cd8:/var/www#
0
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
0
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?