促进。如何在一个单元内运行一个测试单元?

时间:2018-07-17 09:01:47

标签: c++ unit-testing boost

我需要在当前单元的开头运行一个测试单元。 我尝试了BOOST_TEST_INVOKE_IF_N_ARGS,但没有结果。

1 个答案:

答案 0 :(得分:3)

您可以manage test dependencies

  

装饰器depends_on将修饰的测试用例(称为TB)与名称指定的另一个测试用例(称为TA)相关联。这以两种方式影响测试树的处理。首先,测试用例TA被命令在TB之前运行,而不管它们声明或添加到测试树的顺序如何。其次,如果禁用或跳过了TA或将其执行并标记为失败,则会跳过TB的执行。

#define BOOST_TEST_MODULE decorator_07
#include <boost/test/included/unit_test.hpp>

namespace utf = boost::unit_test;

// test1 and test2 defined at the bottom

BOOST_AUTO_TEST_CASE(test3, * utf::depends_on("s1/test1"))
{
  BOOST_TEST(false);
}

BOOST_AUTO_TEST_CASE(test4, * utf::depends_on("test3"))
{
  BOOST_TEST(false);
}

BOOST_AUTO_TEST_CASE(test5, * utf::depends_on("s1/test2"))
{
  BOOST_TEST(false);
}

BOOST_AUTO_TEST_SUITE(s1)

  BOOST_AUTO_TEST_CASE(test1)
  {
    BOOST_TEST(true);
  }

  BOOST_AUTO_TEST_CASE(test2, * utf::disabled())
  {
    BOOST_TEST(false);
  }

BOOST_AUTO_TEST_SUITE_END()

打印

> decorator_07 --report_level=detailed
Running 4 test cases...
test.cpp(10): error: in "test3": check false has failed

Test module "decorator_07" has failed with:
  1 test case out of 4 passed
  1 test case out of 4 failed
  2 test cases out of 4 skipped
  1 assertion out of 2 passed
  1 assertion out of 2 failed

  Test case "test3" has failed with:
    1 assertion out of 1 failed

  Test case "test4" was skipped
  Test case "test5" was skipped
  Test suite "s1" has passed with:
    1 test case out of 1 passed
    1 assertion out of 1 passed

    Test case "s1/test1" has passed with:
      1 assertion out of 1 passed