I've got a problem when using command line to run tests: if I run phpunit like this:
phpunit -–no-configuration -–filter testAdd DataTest DataProviderTest.php
it works fine. But we use a regular expression to specify exactly the name of the method that we want to be tested:
phpunit -–no-configuration -–filter /::testAdd$/ DataTest DataProviderTest.php
The second approach is not working unfortunately. Source code is:
<?php
class DataTest extends PHPUnit_Framework_TestCase
{
/**
* @dataProvider provider
*/
public function testAdd($a, $b, $c)
{
$this->assertEquals($c, $a + $b);
}
public function provider()
{
return array(
array(0, 0, 0),
array(0, 1, 1),
array(1, 0, 1),
array(1, 1, 3)
);
}
}
?>
The regex to handle tests with or without data sets is
phpunit --filter "/::<method>( with data set .*)?$/" <class> <file>
For example
phpunit --filter "/::testAdd( with data set .*)?$/" DataTest DataProviderTest.php
Since a test method won't have a space in the name unless it has a data set, you could really shrink this to
phpunit --filter "/::testAdd( .*)?$/" DataTest DataProviderTest.php
Like @sjoerd pointed out the name that gets matched against contains the number of the dataset.
That means that this works:
phpunit --filter "testAdd with data set #0" DataTest DataProviderTest.php
against your file produces:
PHPUnit 3.7.0RC1 by Sebastian Bergmann.
.
Time: 0 seconds, Memory: 5.25Mb
OK (1 test, 1 assertion)
tested in PHPUnit 3.5 and upwards.
It's not really pretty and having another syntax for this within PHPUnit is definitely preferable but for now it might solve your problem and once someone sends a PR it will be nicer to use ;)
Tracking issue for the nicer syntax on the phpunit github issue tracker
By using a data provider with named datasets it's simpler now:
public function provideData()
{
yield "dataset name 1" => [
$expected = 0,
$val1 = 1,
$val2 = 2
];
yield "dataset name 2" => [...];
}
$ phpunit --filter "dataset name 2"
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With