gpt4 book ai didi

c++ - 如何在 Boost 测试框架中重用测试用例?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:45:50 24 4
gpt4 key购买 nike

例如我有以下测试用例:

#include <MyClass.hpp>
#define BOOST_TEST_MODULE MyTest
#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_CASE( my_test )
{
MyClass o1(42), o2(21);
BOOST_CHECK( o1.is_valid() );
BOOST_CHECK_EQUAL( o1 == o2 * 2 );
BOOST_CHECK_EQUAL ...
...
}

有几个类似的类实现了相同的方法,想用相同的逻辑测试它们,测试用例可能如下:

BOOST_AUTO_TEST_CASE( my_test1 )
{
MyClass1 o1(42), o2(21);
BOOST_CHECK( o1.is_valid() );
BOOST_CHECK_EQUAL( o1 == o2 * 2 );
BOOST_CHECK_EQUAL ...
...
}

BOOST_AUTO_TEST_CASE( my_test2 )
{
MyClass2 o1(42), o2(21);
BOOST_CHECK( o1.is_valid() );
BOOST_CHECK_EQUAL( o1 == o2 * 2 );
BOOST_CHECK_EQUAL ...
...
}

BOOST_AUTO_TEST_CASE( my_test3 )
{
MyClass3 o1(42), o2(21);
BOOST_CHECK( o1.is_valid() );
BOOST_CHECK_EQUAL( o1 == o2 * 2 );
BOOST_CHECK_EQUAL ...
...
}

...

有没有办法在测试用例中重用逻辑?

最佳答案

查看 template test cases .

#include <MyClass.hpp>    
#define BOOST_TEST_MODULE MyTest
#include <boost/test/included/unit_test.hpp>
#include <boost/mpl/list.hpp>

typedef boost::mpl::list<MyClass1,MyClass2,MyClass3> test_types;

BOOST_AUTO_TEST_CASE_TEMPLATE( my_test, T, test_types )
{
T o1(42), o2(21);
BOOST_CHECK( o1.is_valid() );
BOOST_CHECK_EQUAL( o1 == o2 * 2 );
BOOST_CHECK_EQUAL ...
...
}

关于c++ - 如何在 Boost 测试框架中重用测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38812937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com