Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Boost测试用例混合数据集和模板_C++_Boost_Boost Test - Fatal编程技术网

C++ Boost测试用例混合数据集和模板

C++ Boost测试用例混合数据集和模板,c++,boost,boost-test,C++,Boost,Boost Test,我使用boost.test进行单元测试(目前使用boost 1.71.0)。我有一个模板类,我想用数据集进行测试 我只能在不同的模板参数(使用BOOST\u AUTO\u test\u CASE\u template)或数据集(使用BOOST\u DATA\u test\u CASE)上进行测试。但我找不到一种混合模板和数据集的方法 这里是我所取得的成就的MWE,并评论了我正在尝试做的事情 test.cpp: #定义BOOST_测试_模块数据_模板 #包括 #包括 #包括 #包括 #包括 #包括

我使用boost.test进行单元测试(目前使用boost 1.71.0)。我有一个模板类,我想用数据集进行测试

我只能在不同的模板参数(使用
BOOST\u AUTO\u test\u CASE\u template
)或数据集(使用
BOOST\u DATA\u test\u CASE
)上进行测试。但我找不到一种混合模板和数据集的方法

这里是我所取得的成就的MWE,并评论了我正在尝试做的事情

test.cpp

#定义BOOST_测试_模块数据_模板
#包括
#包括
#包括
#包括
#包括
#包括//标准::累积
模板
结构受试者{
C容器;
typename C::value_type f(){
//只是一个要测试的虚拟函数
返回std::accumulate(container.begin(),container.end(),0);
}
};
typedef boost::mpl::列出容器类型;
模板无效测试容器(尺寸)
{
受试者;
t、 容器=t(尺寸,1);
增压检查相等(t.f(),大小);
}
//在所有容器类型上进行测试,但仅在尺寸=100的情况下进行(3个测试用例)
BOOST\u AUTO\u TEST\u CASE\u模板(test1、T、container\u类型)
{
试验容器(100);
}
//使用多种容器尺寸进行测试,但仅针对向量(6个测试用例)
BOOST_DATA_TEST_案例(test2,BOOST::unit_TEST::DATA::make({0,1,2,10,100,1000}),size)
{
试验容器(尺寸);
}
//我要找的是:
////对容器类型和大小的每个组合进行测试(6*3=18个测试用例)
//BOOST_DATA_TEST_CASE_模板(test3,T,容器类型,BOOST::unit_TEST::DATA::make({0,1,2,10,100,1000}),size)
// {
//试验容器(尺寸);
// }
CMakeLists.txt

CMAKE_MINIMUM_REQUIRED( VERSION 3.5 )
PROJECT(data_template_test
    LANGUAGES CXX)

set (CMAKE_CXX_FLAGS "-std=c++17 -Wall ${CMAKE_CXX_FLAGS}")

find_package(Boost 1.59 REQUIRED COMPONENTS unit_test_framework)
add_executable(${PROJECT_NAME} test.cpp)
target_link_libraries(${PROJECT_NAME} Boost::unit_test_framework)
target_compile_definitions(${PROJECT_NAME} PRIVATE BOOST_TEST_DYN_LINK)
MWE生成9个测试用例,这些测试用例通过时没有错误,但是我想要所有类型和所有大小的组合,所以3x6=18个测试用例。 使用boost测试有什么方法可以做到这一点吗?也许使用更详细/不友好的API


谢谢你的帮助

嗨,你有没有找到测试这个的解决方案?虽然我不知道这将如何实现,因为每个模板可能需要不同的数据。我正在考虑一个专门处理数据的装置。