PHP 和带有小数的单元测试断言
2022-08-30 13:33:27
我有一个返回浮点数的方法,如1.234567890.我想测试它是否真的这样做。但是,似乎此返回的浮点数在不同平台上具有不同的精度,因此我如何断言返回值为1.23456789?如果我只是做:
$this->assertEqual(1.23456789, $float);
然后,在某些精度不够的平台上,这可能会失败。
我有一个返回浮点数的方法,如1.234567890.我想测试它是否真的这样做。但是,似乎此返回的浮点数在不同平台上具有不同的精度,因此我如何断言返回值为1.23456789?如果我只是做:
$this->assertEqual(1.23456789, $float);
然后,在某些精度不够的平台上,这可能会失败。
到目前为止,还没有提到 assertEquals 通过提供特定精度的增量来支持比较浮点数:
$this->assertEquals(1.23456789, $float, '', 0.0001);
感谢@Antoine87指出:既然 phpunit 7.5,你应该使用:assertEqualsWithDelta()
$this->assertEqualsWithDelta(1.23456789, $float, 0.0001);
作为@bernhard-wagner答案的更新,您现在应该使用phpunit 7.5。assertEqualsWithDelta()
$this->assertEqualsWithDelta(1.23456789, $float, 0.0001);