4

所以我刚开始使用 PHPUnit,我正在为一个非常简单的库编写测试。它只包含两个类,所以我认为这将是一个很好的起点,这样我就可以了解单元测试的工作原理。

我做了一级测试没有任何问题,但第二个让我头疼,因为我就是不知道这有什么问题。我的数据提供者似乎有些错误。

<?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 文档附录指出

注释是一种特殊形式的句法元数据,可以添加到某些编程语言的源代码中。@annotation arguments虽然 PHP 没有用于注释源代码的专用语言功能,但 PHP 社区已经建立了使用诸如文档块中的标签来注释源代码。在 PHP 文档中,块是反射的:它们可以通过反射 API 的getDocComment()方法在函数、类、方法和属性级别上访问。PHPUnit 等应用程序在运行时使用此信息来配置其行为。— PHPUnit 文档

反射可getDocComment()用于:

虽然没有记录需要两个星号,但在评论部分ReflectionClass::getDocComment, 和ReflectionFunctionAbstract::getDocComment.

资源

于 2014-07-14T19:02:31.937 回答