0
我實際上試圖瞭解PHPUNIT和使用PHP進行單元測試。PHPUnit測試異常和AssertEquals
我有一個經典的劃分方法。
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嗎? 感謝您的幫助 祝您有美好的一天!
準確地說,我使用了@ExpectException註釋,但我需要一個testMethod,我可以在AssertEquals中使用2個不會拋出異常的值。並且1斷言會拋出一個異常......那麼,是否有可能在相同的測試方法中聲明和斷言?或者我應該把它們分開...... – Joe
我建議使用'expectException()'方法,而不是'@ expectedException'註釋。 –