我正在编写接受参数的phpunit测试用例方法。
我的代码如下
class myTestCase extends PHPUnit_Framework_TestCase
{
public function testMyCase($date){
$resultSet=$this->query("select * from testCase where date='$date'");
$this->assertTrue($resultSet,True);
}
}
我正试图从linux终端运行上面的测试用例。
phpunit --filter testMyCase myTestCase.php
但不知道如何传递参数。请帮忙。
谢谢。
答案 0 :(得分:2)
首先,您应该使用最新版本的PHPUnit(v6.x)。 PHPUnit_Framework_TestCase的存在使它看起来像是在使用旧版本。但我离题了......
您需要数据提供者。
class myTestCase extends PHPUnit_Framework_TestCase
{
/**
* @dataProvider providerTestMyCase
**/
public function testMyCase($date, $expectedRowCount) {
$sql = "select * from testCase where date = '$date'";
$stmt = self::$pdo->prepare($sql);
$result = $stmt->execute($sql);
//We expect the query will always work.
$this->assertTrue($result);
//We are expecting the rowcount will be consistent with the expected rowcounts.
$this->assertSame($expectedRowCount,$stmt->rowCount());
}
public funtion providerTestMyCase() {
return [ [ '2017-08-01' , 76 ]
, [ '2017-08-02' , 63 ]
, [ '2017-08-03' , 49 ]
, [ '2017-08-04' , 31 ]
, [ '2017-08-05' , 95 ]
]
}
}
阅读并重新阅读:Database Testing以及@dataProvider
答案 1 :(得分:0)
也许你不需要它。
class myTestCase extends PHPUnit_Framework_TestCase
{
public function testMyCases()
{
$dates = [
'2017-01-01 00:00:00',
'2017-08-03 15:00:00'
];
foreach ($dates as $date) {
$resultSet = $this->query("select * from testCase where date='$date'");
$this->assertTrue($resultSet, true);
}
}
}
答案 2 :(得分:-1)
您的测试方法依赖于$date
。您可以为其提供数据提供者(如前面的答案中所述),或者使其依赖于另一个返回日期的测试方法。
...
function testDateDependency()
{
$date = '...';
$this->assertInternalType('string', $date, 'dependency check');
return $date;
}
/**
* @depends testDateDependency
*/
function testMyCase($date) {
...
这是两个选项(第二个是数据提供者,它可能更好,因为你可以更容易地提供更多不同的依赖值)我知道。 PHPUnit文档可能会显示更多选项。