alg*_*mic 5 floating-point junit hamcrest
我想做一个断言,其中实际值在预期值的固定+/-值或预期值的百分比+/-值之内.
谷歌搜索时我注意到NUnit有一个很好的语法:
Assert.That( 5.5, Is.EqualTo( 5 ).Within(0.075);
Assert.That( 5.5, Is.EqualTo( 5 ).Within(1.5).Percent;
Run Code Online (Sandbox Code Playgroud)
JUnit或Hamcrest有类似我可以使用的东西吗?如果没有,是否有一种表达这种行为的好方法?
简短的回答 - 是的.
老式org.junit.Assert有一个方法assertEquals(java.lang.String message, float expected, float actual, float delta),和一堆类似的双打方法,重载变量与消息,以及类似的实现assertArrayEquals.
如果你想使用Hamcrest,closeTo匹配器就是你想要的.
编辑:
为了解决有关百分比的评论中的问题 - 没有一个开箱即用的匹配器,但你可以通过将两者分开来确保它们在所需的比例和它之间.逆.以OP为例:
float expected = 5.0;
float actual = 5.5
float ratio = 1.0075;
float inverse = 1/ratio;
float div = actual/expected;
assertThat(div, allOf(greaterThan(inverse), lessThan(ratio)));
Run Code Online (Sandbox Code Playgroud)
它有点(好吧,很多)笨重,但它应该做的伎俩.
| 归档时间: |
|
| 查看次数: |
2248 次 |
| 最近记录: |