Catch 单元测试工具

2019-04-10  本文已影响0人  小东_16d3

# Catch 单元测试工具

https://github.com/catchorg/Catch2

最近学习一个比较简单的单元测试工具,特此总结下:

## 使用方式:

ps: Catch 可以做更复杂的测试方式。当前只学懂皮毛,只介绍简单方式,容易上手。

1. 只需要#include "catch.hpp"即可

2. 可以使用TEST_CASE来封装一个测试样例,可自带一到两个参数,第一个描述测试方法,第二个类型。全部以字符串定义。所以在运行时可以指定一个,或者一类样例进行测试,也可以全部进行测试。

3. 使用REQUIRE() 和CHECK();来检测结果是否与预期一致。出现问题后不会中断测试。

4. TEST_CASE里可以通过定义SESSION来简化代码逻辑。比如当测试不同参数对功能的影响时,只需定义多个SESSION来区别参数的定义,调用逻辑可以复用。TEST_CASE会以其中每一个SESSION组合一个测试流程。

5. Catch支持BDD-Style, 即可使用SCENARIO,GIVEN,WHEN,THEN组合进行场景模拟。

## 运行方式:

```c

Catch v2.7.0

usage:

  unittest [<test name|pattern|tags> ... ] options

where options are:

  -?, -h, --help                            display usage information

  -l, --list-tests                          list all/matching test cases

  -t, --list-tags                          list all/matching tags

  -s, --success                            include successful tests in

                                            output

  -b, --break                              break into debugger on failure

  -e, --nothrow                            skip exception tests

  -i, --invisibles                          show invisibles (tabs, newlines)

  -o, --out <filename>                      output filename

  -r, --reporter <name>                    reporter to use (defaults to

                                            console)

  -n, --name <name>                        suite name

  -a, --abort                              abort at first failure

  -x, --abortx <no. failures>              abort after x failures

  -w, --warn <warning name>                enable warnings

  -d, --durations <yes|no>                  show test durations

  -f, --input-file <filename>              load test names to run from a

                                            file

  -#, --filenames-as-tags                  adds a tag for the filename

  -c, --section <section name>              specify section to run

  -v, --verbosity <quiet|normal|high>      set output verbosity

  --list-test-names-only                    list all/matching test cases

                                            names only

  --list-reporters                          list all reporters

  --order <decl|lex|rand>                  test case order (defaults to

                                            decl)

  --rng-seed <'time'|number>                set a specific seed for random

                                            numbers

  --use-colour <yes|no>                    should output be colourised

  --libidentify                            report name and version according

                                            to libidentify standard

  --wait-for-keypress <start|exit|both>    waits for a keypress before

                                            exiting

  --benchmark-resolution-multiple          multiple of clock resolution to

  <multiplier>                              run benchmarks

```

上一篇下一篇

猜你喜欢

热点阅读