PHPUnitのドキュメントには、テストに大量のデータを提供できるデータプロバイダー専用の小さな
セクションがあり、そのすぐ下に
CSVファイルのデータソースの例さえあります。
もちろん、完全なスプレッドシートを使用してください!
私たちは次のことに同意します:
- 各テストファイルには独自のデータファイルがあります( CSVファイルの束ではなく、1つだけです)
- ファイル内のデータは個別のページに保存され、テストごとに1つ、ページの名前はテストの名前と一致します(これがすべての理由でした)
そして、ポイント(最小テキスト、最大コード)を見てみましょう。すべてのコードは、ノートの下部にあるリンクからも入手できます。
ステップ#1:依存関係
必要になります(
composer.json
):
{ "name": "PHPUnitSpreadsheetDataProvider", "require": { "php": ">=5.5.0", "phpunit/phpunit": "4.5.*", "phpoffice/phpexcel": "1.8.*" }, "autoload": { "classmap": [ "src/" ] } }
ステップ#2:基本的なロジック
すべては、ファイルからデータを受信し、テスト用のデータソースに変換する独自のメソッドを追加することです。
受信中:
<?php
2つのポイントに注意する必要があります(残りは明らかです)。
$position = 2;
-データを含む最初の行(番号は1から始まります)、コメントの前に使用できるすべてのもの(以下の例を参照)$resource
-データファイルの名前を定義します。この場合、「 .data.ods
」
変換:
<?php
機能のうち、セルで数式を使用する可能性に注目する価値がありますが、値を変換する別の方法を拒否することはできません-最初に、すべてのデータ型が必要な関数(同じ
NULL
)を持っているわけではなく、次に、数式の計算に時間とリソースがかかります
ステップ#3:データ

ステップ#4:テスト
すべての魔法はアノテーション
@dataProvider getTestDataProvider
囲まれてい
@dataProvider getTestDataProvider
-テストを開始する前に、PHPUnitは、テストの名前を含み、必要なデータソースを取得する引数で、以前に定義されたメソッド
PHPUnitSDP_PHPUnitTestCase::getTestDataProvider()
を呼び出します
ステップ5:結果
PHPUnitSpreadsheetDataProvider> phpunit PHPUnit 4.5.0 by Sebastian Bergmann and contributors. Configuration read from PHPUnitSpreadsheetDataProvider/phpunit.xml ......F Time: 158 ms, Memory: 8.75Mb There was 1 failure: 1) SDPTest::testSqrt with data set #4 (4.0, 3.0) Failed asserting that 2.0 matches expected 3.0. PHPUnitSpreadsheetDataProvider/tests/SDPTest.php:28 phar:
おわりに
このレシピが誰かに役立つことを願っています:)
プロジェクト:
yadi.sk/d/AyegnPCqf7i9Y