我实际上是想了解PHPUNIT和使用PHP进行单元测试。
我有一个经典的除法。
public function divide($firstNumber, $secondNumber){
if( !is_numeric($firstNumber) || !is_numeric($secondNumber) ){
throw new Exception("Not a number") ;
}
if( $secondNumber == 0 ) throw new Exception("Can't divide by zero") ;
return $firstNumber/$secondNumber ;
}
如您所见,它可以返回数字或异常。
这是我使用的testDivide代码。
/**
* @dataProvider diviserDateProvider
* @covers MyTools::diviser
*/
public function testDivide($firstNumber, $secondNumber, $expected) {
$myToolsClasse = new MyTools();
$this->assertEquals($expected, $myToolsClasse->diviser($firstNumber, $secondNumber));
}
public function diviserDateProvider() {
return array(
array(1, 0, new Exception("Can't divide by zero")),
array(1, 2, 0.5),
array("", "", 0.5)
);
}
如您所见,DataProvider具有多个测试值。
问题是我必须接受/声明一个例外,这是最好的方法?
我应该在我的testDivide代码中使用@exceptException并使用try catch吗?
谢谢你的帮助
祝你今天愉快!
最佳答案
使用PHPUnit测试异常的best practice是在测试方法的代码中使用expectException()
。