0
私はPHPでPHPUNITとユニットテストを実際に理解しようとしています。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があります。 問題は、それを行う最善の方法であるExcept/Assert Exceptionを必要としていることです。
@exceptExceptionを使用し、testDivideコードでtry catchを使用する必要がありますか? あなたの助けをありがとう 良い一日を!
私は@ExpectExceptionアノテーションを使用しましたが、例外をスローしない2つの値に対してAssertEqualsを使用できるtestMethodが必要です。そして1つは例外をスローすると主張します...それで、同じテストメソッドでassertequalsと "assert"することは可能ですか?または私はそれらを駆除する必要があります... – Joe
'@ expectedException'アノテーションではなく' expectException() 'メソッドを使用することを提案しました。 –