Data Providers
一个test method可以接受任意个参数。这些参数可以通过一个data provider method(下例中的provider())提供。
data provider method用@dataProvider来声明。
一个data provider method必须是public的,可以返回一组数组,也可以返回一个对象,该对象继承于Iterator接口,根据每一步迭代产生了一个数组。
对每个数组都是这个集合的一部分,test method调用时将以数组内容作为它的参数。
代码 1
<?php
2
class DataTest extends PHPUnit_Framework_TestCase
3
{
4
    /**
5
     * @dataProvider provider
6
     */
7
    public function testAdd($a, $b, $c)
8
    {
9
        $this->assertEquals($c, $a + $b);
10
    }
11
 
12
    public function provider()
13
    {
14
        return array(
15
          array(0, 0, 0),
16
          array(0, 1, 1),
17
          array(1, 0, 1),
18
          array(1, 1, 3)
19
        );
20
    }
21
}
22
?>
<?php2
class DataTest extends PHPUnit_Framework_TestCase3
{4
    /**5
     * @dataProvider provider6
     */7
    public function testAdd($a, $b, $c)8
    {9
        $this->assertEquals($c, $a + $b);10
    }11
 12
    public function provider()13
    {14
        return array(15
          array(0, 0, 0),16
          array(0, 1, 1),17
          array(1, 0, 1),18
          array(1, 1, 3)19
        );20
    }21
}22
?>phpunit DataTest
PHPUnit 3.4.2 by Sebastian Bergmann.
...F
Time: 0 seconds
There was 1 failure:
1) testAdd(DataTest) with data (1, 1, 3)
Failed asserting that <integer:2> matches expected value <integer:3>.
/home/sb/DataTest.php:21
FAILURES!
Tests: 4, Assertions: 4, Failures: 1.
上例中,第四组数据测试不通过。
*当一个test同时从@dataProvider方法和一个或多个@depends方法接受参数时,来自data provider的参数将在来自@depends的参数之前。
                    
                
                

                
            
        
浙公网安备 33010602011771号