我实际上是想用PHP理解PHPUNIT和单元测试。
我有一个经典的划分方法。
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 ;
}
如您所见,它可以返回Number或Exception。 这是我使用的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具有多个测试值。 问题是我必须除外/断言一个异常,这是最好的方法吗?
我应该使用@exceptException并在testDivide代码中使用try catch吗? 谢谢你的帮助 祝你今天愉快!
答案 0 :(得分:3)
使用PHPUnit测试异常的best practice是在测试方法的代码中使用expectException()
。
答案 1 :(得分:0)
尝试一下
$this->expectException(\Exception::class);
$this->expectExceptionMessage('Expected Exception Message');