プロローグ
「ユニットテスト」というものをやったことがなかったので、自分で試してみようと思いました。
調べてみるとどうやら各言語ごとにユニットテスト用のツールがあると分かり、僕は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に以下を記述。
{
"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.
長かった。。。
予想外に記事が長すぎてしまったので次回、ユニットテスト実践編を書いていきます!