ホームページ  >  記事  >  バックエンド開発  >  phpunit 関数ポイントの構成_PHP チュートリアル

phpunit 関数ポイントの構成_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-14 10:07:18781ブラウズ

シーンを設定する
配列フィクスチャを作成する
[php]
保護された関数 setUp()
{
//配列フィクスチャを作成します。
$this->フィクスチャ = array();
}
「キットレベルアセンブラ」共有フィクスチャはsharedFixtureです
PHPUnit_Framework_TestSuite オブジェクトの $sharedFixture 属性は、PHPUnit_Framework_TestSuite オブジェクト コレクションと PHPUnit_Framework_TestCase オブジェクトの両方で使用できます。
[php]
保護された関数 setUp()
{
$this->sharedFixture = 新しい PDO(
'mysql:host=wopr;dbname=test',
「ルート」、
);
}
プロバイダー データプロバイダー
データプロバイダーを使用する
テストスイートを整理する
PHPUnit フレームワークの PHPUnit_Framework_TestSuite クラスを使用すると、複数のテスト スイートで構成される階層構造でいくつかのテストを編成できます。例を通して PHPUnit 固有のテスト スイートを見てみましょう。
例 7.1 は Tests/AllTests.php の切り詰められたバージョンを示し、例 7.2 は Tests/Framework/AllTests.php の切り詰められたバージョンを示します。
レベル 1:
[php]
if (!define('PHPUnit_MAIN_METHOD')) {
define('PHPUnit_MAIN_METHOD', 'AllTests::main');
}
require_once 'PHPUnit/Framework.php';
require_once 'PHPUnit/TextUI/TestRunner.php';
require_once 'Framework/AllTests.php';
// ...
クラス AllTests
{
パブリック静的関数main()
{
PHPUnit_TextUI_TestRunner::run(self::suite());
}
パブリック静的関数スイート()
{
$suite = 新しい PHPUnit_Framework_TestSuite('PHPUnit');
$suite->addTest(Framework_AllTests::suite());
}
}
if (PHPUnit_MAIN_METHOD == 'AllTests::main') {
AllTests::main();
}
?>
レベル 2:
[php]
if (!define('PHPUnit_MAIN_METHOD')) {
define('PHPUnit_MAIN_METHOD', 'Framework_AllTests::main');
}
require_once 'PHPUnit/Framework.php';
require_once 'PHPUnit/TextUI/TestRunner.php';
require_once 'フレームワーク/AssertTest.php';
// ...
クラス Framework_AllTests
{
パブリック静的関数main()
{
PHPUnit_TextUI_TestRunner::run(self::suite());
}
パブリック静的関数スイート()
{
$suite = 新しい PHPUnit_Framework_TestSuite('PHPUnit フレームワーク');
$suite->addTestSuite('Framework_AssertTest');
}
}
if (PHPUnit_MAIN_METHOD == 'Framework_AllTests::main') {
Framework_AllTests::main();
}
?>
レベル 3:
[php]
/**
* PHPunit テストスイート
* /tests/Framework/Framework/AssertTest.php
* @anthor Chen Wei Han
* @copyright 2011-7-6 02:10:29 PM
* @package phpunit
* @todo
*/
//require_once 'PHPUnit/Framework.php';
クラス Framework_Framework_AssertTest は PHPUnit_Framework_TestCase を拡張します{
パブリック関数 testNewArrayIsEmpty()
{
// 配列フィクスチャを作成します。
$フィクスチャ = 配列();
// 配列フィクスチャのサイズが 0 であることをアサートします。
$this->assertEquals(0, sizeof($fixture));
}
パブリック関数 testArrayContainsAnElement()
{
// 配列フィクスチャを作成します。
$フィクスチャ = 配列();
// 要素を配列フィクスチャに追加します。
$fixture[] = '要素';
//配列フィクスチャのサイズが 1 であることをアサートします。
$this->assertEquals(1, sizeof($fixture));
}
}
?>
クラス Framework_AssertTest は、PHPUnit_Framework_TestCase を拡張する標準テスト ケースです。
Tests/AllTests.php を実行すると TextUI テスト ランチャーを使用してすべてのテストが実行されますが、Tests/Framework/AllTests.php を実行するとクラス PHPUnit_Framework_* のテストのみが実行されます。
キットレベルアセンブラ
クラス PHPUnit_Framework_TestSuite には、setUp() と TearDown() という 2 つのテンプレート メソッドが用意されており、それぞれテスト スイートの最初のテストの前と最後のテストの後に呼び出されます。
[php]
require_once 'MyTest.php';
クラス MySuite は PHPUnit_Framework_TestSuite を拡張します
{
パブリック静的関数スイート()
{
新しい MySuite('MyTest') を返します
}
保護された関数 setUp()
{
print "nMySuite::setUp()";
}
保護された関数tearDown()
{
print "nMySuite::tearDown()";
}
}
?>
不完全なテストとスキップされたテスト
パブリック関数 testSomething()
{
}
成功したテストと失敗したテストを緑と赤のライトに分ける場合、未完了または未実装のテストをマークするための黄色のライトも必要です。 PHPUnit_Framework_IncompleteTest は、テスト結果が不完全であるか、現在実装されていない場合に発生する例外をマークするために使用されるマーキング インターフェイスです。
[php]
require_once 'PHPUnit/Framework.php';
クラス SampleTest は PHPUnit_Framework_TestCase を拡張します
{
パブリック関数 testSomething()
{
//オプション: 必要なものは何でもテストできます。
$this->assertTrue(TRUE, 'これはすでに動作するはずです。');
// ここで停止し、テストを未完了としてマークします。
$this->markTestIncomplete(
「このテストはまだ実装されていません。」
);
}
}
?>
テストをスキップしました
すべてのテストが特定の環境で実行できるわけではありません。さまざまなデータベース システムをサポートする複数のドライバーを備えたデータベース抽出レイヤーの例を考えてみましょう。 MySQL 駆動テストは、当然ながら MySQL サーバー上でのみ実行できます。 $this->markTestSkipped
[php]
require_once 'PHPUnit/Framework.php';
クラス DatabaseTest は PHPUnit_Framework_TestCase を拡張します
{
保護された関数 setUp()
{
if (!extension_loaded('mysqli')) {
$this->markTestSkipped(
「MySQLi 拡張機能は利用できません。」
);
}
}
パブリック関数 testConnection()
{
}
}
?>
PHPUnit_Framework_TestResult
これらすべてのテストを実行しているときは、実行されたテストの数、失敗したテスト、および所要時間など、すべての結果をどこかに保存する必要があります。
PHPUnit には、PHPUnit_Extensions_RepeatedTest と PHPUnit_Extensions_TestSetup という 2 つの特定のテスト デコレーターが付属しています。前者はテストを繰り返し実行し、すべての反復が成功した場合にのみ成功としてカウントするために使用されます。後者については第 6 章で説明します。
PHPUnit_Framework_TestResult をカスタマイズするには、そのサブクラス全体を記述する必要はありません。ほとんどの場合、テストを実行する前に、新しい PHPUnit_Framework_TestListener (表 22.14 を参照) を実装し、それを PHPUnit_Framework_TestResult オブジェクトにアタッチするだけで十分です。
例 23.4: テストスイートの実行と観察
[php] www.2cto.com
require_once 'PHPUnit/Framework.php';
require_once 'ArrayTest.php';
require_once 'SimpleTestListener.php';
// ArrayTest クラスのテストを含むテスト スイートを作成します。
$suite = 新しい PHPUnit_Framework_TestSuite('ArrayTest');
// テスト結果を作成し、それにオブザーバーとして SimpleTestListener オブジェクトをアタッチします。
$result = 新しいPHPUnit_Framework_TestResult;
$result->addListener(new SimpleTestListener);
//テストを実行します。
$suite->run($result);
?>
http://www.bkjia.com/PHPjc/477859.html
www.bkjia.com
本当
http://www.bkjia.com/PHPjc/477859.html
技術記事

配列フィクスチャを作成するシーンを設定します [php] protected function setUp() { // 配列フィクスチャを作成します。 $this-fixture = array(); } キットレベルのアセンブラ 共有フィクスチャはsharedFixture PHPUnit_F...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。