简介
Catch2是一个header-only测试框架。
使用说明
1 |
|
Assertion
基本断言
- REQUIRE(expression)
- CHECK(expression)
- REQUIRE_FALSE(expression)
- CHECK_FALSE(expression)
注意:REQUIRE和CHECK最主要的区别在于REQUIRE表达式为false时中断执行,而CHECK继续执行。Matcher比较器
- REQUIRE_THAT(lhs, matcher expression)
- CHECK_THAT(lhs, matcher expression)
主要内置Matchers
— string matchers:StartsWith, EndsWith, Contains, Equals and Matches
— vector matchers:Contains, VectorContains and Equals
— floating point matchers:WithinULP and WithinAbs1
REQUIRE_THAT( str, EndsWith( "as a service", Catch::CaseSensitive::No ) );
浮点数比较
- epsilon:default std::numeric_limits
::epsilon()*100. - margin:default 0.0.
- scale:default 0.0.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25TEST_CASE("approx epsilon", "[single-file]")
{
// 闭区间
// [100-100*epsilon,100+100*epsilon]
Approx target = Approx(100).epsilon(0.01);
CHECK(100.0 == target); // Obviously true
CHECK(99.0 == target); // Obviously true
CHECK(98.1 == target); // Obviously true
CHECK(101.0 == target); // Obviously true
CHECK(101.1 == target); // Obviously true
}
TEST_CASE("approx margin", "[single-file]")
{
// 闭区间
// [100-margin,100+margin]
Approx target = Approx(100).margin(1);
CHECK(100.0 == target); // Obviously true
CHECK(99.0 == target); // Obviously true
CHECK(98.1 == target); // Obviously true
CHECK(101.0 == target); // Obviously true
CHECK(101.1 == target); // Obviously true
}
Logging
- INFO( message expression )
- WARN( message expression )
- FAIL( message expression )
- FAIL_CHECK( message expression )
- CAPTURE( expression1, expression2, … )
1
2
3
4
5
6
7
8
9
10int a = 1, b = 2, c = 3;
CAPTURE( a, b, c, a + b, c > b, a == 1);
输出:
// 输出
//a: = 1
//b : = 2
//c : = 3
//a + b : = 3
//c > b : = true
//a == 1 : = true