プラグインのためのユニットテストを書く方法 – Piwikのプラットフォームの紹介
それではブログシリーズの新しい記事、Piwik プラットフォームの機能を紹介します(以前の記事はユーザー権限を確認する方法)。今回は Piwik でユニットテストを記述する方法を学びます。このチュートリアルは、PHP、PHPUnit、Piwik プラットフォームの基本的な知識を持っている必要があります。
いつ行うテストがユニットテストでしょう?
これについての多くの種々の意見があり、しばしば、決めることが困難です。Piwikでは、ただ一つのメソッドもしくはクラスがテストされる場合か、あるいはそのテストがファイルシステムやウェブ、設定、データベース、その他のプラグインに依存しない場合にユニットテストとみなしています。
テスト速度が遅い場合、単体テストではない指標をすることができます。「遅い」はもちろん少し曖昧です。今後のブログ記事のいずれかでテスト、統合テストなどの他のタイプを記述する方法を説明します。
はじめに
この記事で既に Piwik 2.9.0 インストールまたは後で gitを介して開発環境を設定しているプラグインを作成したと仮定します。まだの場合は、Piwik デベロッパーゾーンへアクセスし、Piwik のセットアップチュートリアルとプラグイン開発ガイドを参照してください。
単体テストを作成してみましょう
まず Piwik コンソールを使用して新しい単体テストを作成します。
./console generate:test --testtype unit
コマンドで、作成されたテストに属するべきプラグインの名前を入力するように求められます。プラグイン名“Insights”が使用されます。次に、テストの名前が求められます。ここで通常テストするクラスの名前を入力します。この例では「Widgets」を使用します。現在、既に容易に始められるように例を含むファイル plugins/Insights/tests/Unit/WidgetsTest.php
があるはずです:
/** * @group Insights * @group WidgetsTest * @group Plugins */ class WidgetsTest extends \PHPUnit_Framework_TestCase { public function testSimpleAddition() { $this->assertEquals(2, 1+1); } }
我々は単体テストを作成する方法カバーしていません。これは完全にあなた次第です。単体テストの記述ではありませんが、経験がある場合は、トピック、本の記事を読む、ビデオなど他の媒体で学ぶことお勧めします。
テストの実行
テストするために、テストスイート、特定のファイルまたはテストのグループを作成できるコマンド tests:run
を使用するつもりです。
作成されたテストは、次のように実行されますが動作するかどうかを確認します。
./console tests:run WidgetsTest
これにより、グループWidgetsTest
を持つすべてのテストを実行します。他のテストは、同じグループを使用できるように、テスト ファイルへのパスを代わりに渡すことができます:
./console tests:run plugins/Insights/tests/Unit/Widgets.php
プラグイン内のすべてのテストを実行する場合は、プラグインの名前を引数として渡します:
./console tests:run insights
もちろん複数の引数も定義できます
./console tests:run insights WidgetsTest
これは WidgetsTest グループの持つ insights プラグイン内のすべてのテストを実行します。あなたのプラグイン内のユニットテストを実行する場合、次を行うことができます。
./console tests:run insights unit
高度な機能
ユニットテストを作成するのは難しいですか?私たちも、ファイルを作成したことはありません!もし作成したい場合には多くを達成することができます。他のタイプのテストを生成し、AmazonのAWS上で実行することも可能です!
残念なことに全てがドキュメント化されている訳ではないので、次の2つのコマンドを実行することでもっと多くの機能を確認してみることをお勧めします。./console list tests
、./console help tests:run
API または Piwik デベロッパーゾーンの手順に関してのフィードバックもお気軽にお寄せ下さい。
Thomas Steur