4

だから私はPHPUnitを使い始めたばかりで、非常に単純なライブラリのテストを書いています。2つのクラスのみで構成されているため、単体テストの仕組みを理解できるように、開始するのに最適な場所だと思いました。

ファーストクラスのテストは問題なく行いましたが、セカンドクラスのテストでは、何が問題なのかわからないため、頭痛の種になります。私のデータプロバイダーにエラーがあるようです。

<?php

use PIFlex\Roulette\Roulette;

class RouletteTest extends PHPUnit_Framework_TestCase
{
    protected $roulette;

    public function setUp()
    {
        $this->roulette = new Roulette();
    }

    /*
     * @dataProvider addItemDataProvider
     */
    public function testAddItem($item)
    {
        $this->assertInstanceOf(
            'PIFlex\Roulette\Roulette',
            $this->roulette->addItem($item, 1)
        );
    }

    public function addItemDataProvider()
    {
        return array(
            array("string"),
            array(1),
        );
    }
}

次のエラーがスローされます。

There was 1 error:

1) RouletteTest::testAddItem
Missing argument 1 for RouletteTest::testAddItem()

/home/igor/Dropbox/www/Github/PIFlexRoulette/test/PHPUnit/Roulette/RouletteTest.php:22

FAILURES!
Tests: 12, Assertions: 11, Errors: 1.
4

2 に答える 2

25

注釈コメントが間違っています。「**」で始まる必要があるため、変更するだけです。

/*
 * @dataProvider addItemDataProvider
 */

の中へ:

/**
 * @dataProvider addItemDataProvider
 */
于 2013-01-20T16:06:55.943 に答える
0

... @Cyprianの答えを拡張...

注釈に関するPHPUnitドキュメントの付録には、次のように記載されています。

注釈は、一部のプログラミング言語のソースコードに追加できる特殊な形式の構文メタデータです。PHPにはソースコードに注釈を付けるための専用の言語機能はありませんが、ドキュメントブロックなどのタグの使用法は、ソースコード@annotation argumentsに注釈を付けるためにPHPコミュニティで確立されています。getDocComment()PHPのドキュメントでは、ブロックはリフレクションです。関数、クラス、メソッド、および属性レベルでReflectionAPIのメソッドを介してアクセスできます。PHPUnitなどのアプリケーションは、実行時にこの情報を使用して動作を構成します。—PHPUnitのドキュメント

getDocComment()リフレクションは次の目的で利用できます。

また、2つのアスタリスクが必要であることは文書化されていませんが、コメントセクション、、、ReflectionClass::getDocCommentおよびに記載されていますReflectionFunctionAbstract::getDocComment

資力

于 2014-07-14T19:02:31.937 に答える