phpunitのデータプロバイダーを試したというお話。
composer.jsonの作成
{
"require-dev": {
"phpunit/phpunit": "*"
},
"autoload": {
"psr-4": {
"Sample\\": "src/"
}
}
}
$ composer update
$ tree
/
|--composer.json
|--composer.lock
|--src
| |--Sample.php
|--tests
| |--SampleTest.php
|--vendor
Sample.phpとSampleTest.phpを作成
SampleTest.phpのadditionProviderがデータプロバイダー
Sample.php
<?php
namespace Sample;
class Sample {
// $a + $b を返す
public function Add($a, $b) {
return $a + $b;
}
// $a - $b を返す(実際は間違っている)
public function Sub($a, $b) {
return $a + $b;
}
}
SampleTest.php
<?php
use PHPUnit\Framework\TestCase;
use Sample\Sample;
class SampleTest extends PHPUnit\Framework\TestCase {
public function test_add() {
$sample = new Sample();
$this->assertEquals(10, $sample->Add(4, 6));
}
/**
* @dataProvider additionProvider
*/
public function test_sub($ans, $a, $b) {
$sample = new Sample();
$this->assertEquals($ans, $sample->Sub($a, $b));
}
public function additionProvider() {
return [
[1, 7, 6],
[2, 8, 6]
];
}
}
PHPUnit 7.4.0 by Sebastian Bergmann and contributors.
.FF 3 / 3 (100%)
Time: 28 ms, Memory: 4.00MB
There were 2 failures:
1) SampleTest::test_sub with data set #0 (1, 7, 6)
Failed asserting that 13 matches expected 1.
/tests/SampleTest.php:18
2) SampleTest::test_sub with data set #1 (2, 8, 6)
Failed asserting that 14 matches expected 2.
/tests/SampleTest.php:18
FAILURES!
Tests: 3, Assertions: 3, Failures: 2.