0
1

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 5 years have passed since last update.

No.2 新卒未経験エンジニアがComposerでPHPUnitをインストールしてユニットテストを試してみた〜PHPUnitインストール編〜

Last updated at Posted at 2017-10-05

プロローグ

「ユニットテスト」というものをやったことがなかったので、自分で試してみようと思いました。
調べてみるとどうやら各言語ごとにユニットテスト用のツールがあると分かり、僕はPHPしか使ったことないのでPHPでのユニットテスト用のツール「PHPUnit」を試すことにしました。

ユニットテストとは

コンピュータプログラミングにおいて単体テスト(たんたいテスト)あるいはユニットテストとは、ソースコードの個々のユニット、すなわち、1つ以上のコンピュータプログラムモジュールが使用に適しているかどうかを決定するために、関連する制御データ、使用手順、操作手順とともにテストする手法である。
(引用:Wikipedia)

環境

・mac OS X El Capitan バージョン 10.11.6
・PHP 5.6.30

PHPUnitのインストール

まずはこちらのサイトを参考にPHPUnitのインストールしていきました。
http://www.atmarkit.co.jp/ait/articles/0911/12/news105.html

ターミナル
pear channel-discover pear.phpunit.de

すると

ターミナル
pear: command not found

と怒られる。
じゃあpearをインストールしようと思い、以下のサイトを参考にインストール!
https://qiita.com/katsukii/items/1f343edc5eb7f9aa1a0b

ターミナル
sudo php /usr/lib/php/install-pear-nozlib.phar
sudo cp /etc/php.ini.default /etc/php.ini

php.iniのinclude_pathを

ターミナル
include_path = ".:/php/includes"

から

ターミナル
include_path = ".:/usr/lib/php/pear"

に変更!

ターミナル
sudo pear list

で確認や!!

ターミナル
sudo: pear: command not found

ちーん。。。。orz
なんでやぁッァアああああ!!
調べてみたけどイマイチ原因も分からず、他の方法を模索していたところComposerでもPHPUnitをインストール出来るという情報が!
早速以下のサイトを参考に進めていきました!
http://www.elp.co.jp/staffblog/?p=5890
まずはテキトーなディレクトリを作り、そこに移動してcomposer.jsonファイルを作成。

ターミナル
mkdir develop
cd develop/
touch composer.json

そしてcomposer.jsonに以下を記述。

composer.json
{
    "require-dev": {
        "phpunit/phpunit": "*"
    }
}

その後composerをアップデートして無事完了!

ターミナル
composer update

試しに

ターミナル
phpunit -v

と打つと

ターミナル
PHPUnit 5.7.22 by Sebastian Bergmann and contributors.

Usage: phpunit [options] UnitTest [UnitTest.php]
       phpunit [options] <directory>

Code Coverage Options:

  --coverage-clover <file>  Generate code coverage report in Clover XML format.
  --coverage-crap4j <file>  Generate code coverage report in Crap4J XML format.
  --coverage-html <dir>     Generate code coverage report in HTML format.
  --coverage-php <file>     Export PHP_CodeCoverage object to file.
  --coverage-text=<file>    Generate code coverage report in text format.
                            Default: Standard output.
  --coverage-xml <dir>      Generate code coverage report in PHPUnit XML format.
  --whitelist <dir>         Whitelist <dir> for code coverage analysis.
  --disable-coverage-ignore Disable annotations for ignoring code coverage.

Logging Options:

  --log-junit <file>        Log test execution in JUnit XML format to file.
  --log-teamcity <file>     Log test execution in TeamCity format to file.
  --testdox-html <file>     Write agile documentation in HTML format to file.
  --testdox-text <file>     Write agile documentation in Text format to file.
  --testdox-xml <file>      Write agile documentation in XML format to file.
  --reverse-list            Print defects in reverse order

Test Selection Options:

  --filter <pattern>        Filter which tests to run.
  --testsuite <name>        Filter which testsuite to run.
  --group ...               Only runs tests from the specified group(s).
  --exclude-group ...       Exclude tests from the specified group(s).
  --list-groups             List available test groups.
  --list-suites             List available test suites.
  --test-suffix ...         Only search for test in files with specified
                            suffix(es). Default: Test.php,.phpt

Test Execution Options:

  --report-useless-tests    Be strict about tests that do not test anything.
  --strict-coverage         Be strict about @covers annotation usage.
  --strict-global-state     Be strict about changes to global state
  --disallow-test-output    Be strict about output during tests.
  --disallow-resource-usage Be strict about resource usage during small tests.
  --enforce-time-limit      Enforce time limit based on test size.
  --disallow-todo-tests     Disallow @todo-annotated tests.

  --process-isolation       Run each test in a separate PHP process.
  --no-globals-backup       Do not backup and restore $GLOBALS for each test.
  --static-backup           Backup and restore static attributes for each test.

  --colors=<flag>           Use colors in output ("never", "auto" or "always").
  --columns <n>             Number of columns to use for progress output.
  --columns max             Use maximum number of columns for progress output.
  --stderr                  Write to STDERR instead of STDOUT.
  --stop-on-error           Stop execution upon first error.
  --stop-on-failure         Stop execution upon first error or failure.
  --stop-on-warning         Stop execution upon first warning.
  --stop-on-risky           Stop execution upon first risky test.
  --stop-on-skipped         Stop execution upon first skipped test.
  --stop-on-incomplete      Stop execution upon first incomplete test.
  --fail-on-warning         Treat tests with warnings as failures.
  --fail-on-risky           Treat risky tests as failures.
  -v|--verbose              Output more verbose information.
  --debug                   Display debugging information during test execution.

  --loader <loader>         TestSuiteLoader implementation to use.
  --repeat <times>          Runs the test(s) repeatedly.
  --teamcity                Report test execution progress in TeamCity format.
  --testdox                 Report test execution progress in TestDox format.
  --testdox-group           Only include tests from the specified group(s).
  --testdox-exclude-group   Exclude tests from the specified group(s).
  --printer <printer>       TestListener implementation to use.

Configuration Options:

  --bootstrap <file>        A "bootstrap" PHP file that is run before the tests.
  -c|--configuration <file> Read configuration from XML file.
  --no-configuration        Ignore default configuration file (phpunit.xml).
  --no-coverage             Ignore code coverage configuration.
  --no-extensions           Do not load PHPUnit extensions.
  --include-path <path(s)>  Prepend PHP's include_path with given path(s).
  -d key[=value]            Sets a php.ini value.
  --generate-configuration  Generate configuration file with suggested settings.

Miscellaneous Options:

  -h|--help                 Prints this usage information.
  --version                 Prints the version and exits.
    --atleast-version <min>   Checks that version is greater than min and exits.

長かった。。。
予想外に記事が長すぎてしまったので次回、ユニットテスト実践編を書いていきます!

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?