我实际上是想了解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()

10-06 11:18