R. *_*des 27 c++ unit-testing catch-unit-test
我正在使用Catch测试框架.
在介绍性博客文章中,作者提到了以下功能:
- 以易于使用的方式支持浮点公差
我找不到任何关于如何做到这一点的文档.怎么在Catch完成?
R. *_*des 32
这很简单.有一个叫做的类Approx
让你以一种非常易读的方式进行测试:
#include <limits>
TEST_CASE("demo/approx", "Approx demo") {
double a = 1.0;
double b = a + std::numeric_limits<double>::epsilon();
REQUIRE_FALSE(b == a);
REQUIRE(b == Approx(a));
}
Run Code Online (Sandbox Code Playgroud)
公差可以通过使用成员函数来改变epsilon()
和scale()
所述的Approx
物体,像这样:Approx(a).epsilon(e)
.
mar*_*cin 14
公差自2011年4月起可定制.Approx
有两个成员函数:epsilon()
和scale()
.例如:
REQUIRE(a == Approx(b).epsilon(my_eps));
Run Code Online (Sandbox Code Playgroud)
公差为ε×(scale + max(| a |,| b |)),其中scale默认为1,因此这将通过:
REQUIRE((2+2) == Approx(5).epsilon(0.17));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5009 次 |
最近记录: |