标签: boost-test

在Boost :: test中报告异常

使用boost::test框架,有没有办法检测是否从函数抛出异常(某种类型)?

c++ boost-test

5
推荐指数
1
解决办法
1125
查看次数

升压测试无输出

我正在尝试使用 boost 测试库实现单元测试。我首先阅读 boost 站点上的手册。在此之后,我在我已经存在的项目之一中制作了一个简单的测试程序。我面临的唯一问题是我无法看到测试结果。我确信我做错了什么:)但我无法弄清楚。以下是我的项目的详细信息

我为此使用了 Visual Studio8:我有一个名为MyProject.sln的解决方案

与其他项目一起,我有一个名为MyDLL.vcproj的项目(该项目的类型是DLL

连同 MYDLL proj 中的其他文件,我添加了一个新的 cpp 文件名MyTest.cpp,该文件包含以下代码:

#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MAIN
//#define BOOST_TEST_MODULE MyTestTestModue  //no need for this maro if above macro is used
#include <boost/test/unit_test.hpp>

BOOST_AUTO_TEST_CASE(SampleTC)
{
    BOOST_CHECK(true);
};    
Run Code Online (Sandbox Code Playgroud)

我在 MYDLL 项目属性表中进行了以下更改

C++ -> General -> Additional Include Dependencies = D:\MyProject\Boost\boost\test
Linker -> General -> Additional Libray Directories = D:\MyProject\Boost\lib\win32\Debug
Linker -> System -> SubSystem = (/SUBSYSTEM:CONSOLE)
Run Code Online (Sandbox Code Playgroud)

我阅读了手册中给出的所有编译细节,但仍然无法获得输出。理想情况下,我想将 Boost 测试用作独立库(UTF 的动态库变体)。

boost unit-testing boost-test

5
推荐指数
1
解决办法
5562
查看次数

每个套件的 boost-test 初始化(非大小写)

我需要初始化一些变量,它们在 BOOST_AUTO_TEST_SUITE 中是“全局的”,因此它们的构造函数将在套件启动时被调用,并且它们的析构函数将在最后一个相应的 BOOST_AUTO_TEST_CASE 完成后被调用

有人知道我该怎么做吗?看起来全局装置不是解决方案......

c++ fixture suite boost-test

5
推荐指数
2
解决办法
3487
查看次数

如何使用 boost 单元测试打印测试摘要

有没有办法打印在 boost 单元测试中运行的测试的摘要。特别是,能否列出失败的测试?

我很难在输出中找到失败的测试(尤其是当测试有自己的输出时)。我已经设置了 BOOST_TEST_LOG_LEVEL 以显示进入/退出,但这还不足以定位失败的测试。

c++ boost-test

5
推荐指数
1
解决办法
1889
查看次数

将 Boost 单元测试转换为 Google Test (GTest) 单元测试的工具?

有没有人知道自动将 boost 测试单元测试转换为 GTest 的工具?许多简单的测试看起来至少可以自动转换,从而节省了大量时间。

boost unit-testing googletest boost-test

5
推荐指数
0
解决办法
260
查看次数

获取所有 boost 测试套件/测试用例

正如标题所说,我想从测试应用程序、控制台中的以太或 xml 输出中获取所有测试套件或测试用例(名称)。测试框架是 boost 测试库。

有没有办法实现这一目标?我在文档中没有发现任何有用的东西。

c++ boost unit-testing boost-test

5
推荐指数
2
解决办法
2844
查看次数

单元测试项目的物理布局是什么?

目前,我正在学习单元测试,我想将测试集成到我当前的(10 个 OpenGL 实验文件)项目中。为此,我下载了 Boost.Test,虽然我可以弄清楚它在单个文件样本上的工作原理,但我不知道如何将它集成到我的项目中(我想使用静态链接版本)。

测试与应用程序本身不同的二进制文件吗?(如果它是一个二进制文件,如何运行它?)我应该为每个测试类创建一个测试文件吗?我的 CMakeLists 应该改变多少来反映这种集成?是否可以将测试与应用程序分离,以便我可以在没有安装 boost 的平台上构建我的应用程序?

我知道我有很多问题,但简单地说:Boost.Test 在现实生活中是如何使用的?

c++ unit-testing structure boost-test

5
推荐指数
1
解决办法
388
查看次数

如何链接 boost unit_test 库(boost_unit_test_framework)?

我有简单的提升单元测试片段:

#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MAIN
#define BOOST_TEST_MODULE MyTest

#include <boost/test/unit_test.hpp>

int add(int i, int j) {
  return i + j;
}

BOOST_AUTO_TEST_CASE(my_test) {
}
Run Code Online (Sandbox Code Playgroud)

但是通过使用以下命令编译:

g++ main.cpp --std=c++14 -lboost_unit_test_framework
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

/tmp/ccHOUqfd.o: In function `__static_initialization_and_destruction_0(int, int)':
main.cpp:(.text+0x4ae): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)'
/tmp/ccHOUqfd.o: In function `boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long)':
main.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS_8functionIFvvEEENS0_13basic_cstringIKcEES8_m[_ZN5boost9unit_test14make_test_caseERKNS_8functionIFvvEEENS0_13basic_cstringIKcEES8_m]+0xa7): undefined reference to `boost::unit_test::test_case::test_case(boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long, boost::function<void ()> const&)'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

我尝试使用仅标头版本进行编译并且它可以工作 - 通过将 boost 单元测试更改为: …

c++ linker boost boost-test

5
推荐指数
1
解决办法
1866
查看次数

在 Visual Studio 测试资源管理器窗口中看不到 boost 单元测试命名空间和类名

我正在 Visual Studio 2019 中开发 CMake 项目,我想boost::test使用 Visual Studio 测试资源管理器执行单元测试。

我有以下内容CMakeLists.txt为某些代码定义了一个 boost 单元测试项目:

cmake_minimum_required (VERSION 3.10.0)

include(CTest)

enable_testing()

project (datatest)

message (STATUS "Building project ${PROJECT_NAME}")

set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${TEST_OUTPUT_DIRECTORY})
set (Boost_USE_STATIC_LIBS ON)
set (Boost_USE_MULTITHREADED ON)
unset (Boost_INCLUDE_DIR CACHE)
unset (Boost_LIBRARY_DIRS CACHE)
set (CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH})
find_package (Boost COMPONENTS unit_test_framework log system REQUIRED)

include_directories (${CMAKE_SOURCE_DIR}/src ${Boost_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR})

set (TEST_SRC
  stdafx.cpp
  IconTest.cpp
  AttitudeTest.cpp
  LLAtest.cpp
  Model3DTest.cpp
  PlayerTest.cpp
  TimeDateTest.cpp
  )

add_executable (${PROJECT_NAME} ${TEST_SRC})

# Creating a function for easily adding tests
# …
Run Code Online (Sandbox Code Playgroud)

unit-testing cmake boost-test visual-studio visual-studio-2019

5
推荐指数
0
解决办法
339
查看次数

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

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

我只能找到测试不同模板参数(使用BOOST_AUTO_TEST_CASE_TEMPLATE)或数据集(使用BOOST_DATA_TEST_CASE)的方法。但我找不到混合模板和数据集的方法。

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

test.cpp

#define BOOST_TEST_MODULE data_template
#include <boost/mpl/list.hpp>
#include <boost/test/data/test_case.hpp>
#include <boost/test/unit_test.hpp>
#include <vector>
#include <list>
#include <numeric> // std::accumulate

template <typename C>
struct Testee{
    C container;
    typename C::value_type f(){
        // just a dummy function to be tested
        return std::accumulate(container.begin(),container.end(),0);
    }
};

typedef boost::mpl::list<std::vector<double>, std::list<double>, std::vector<size_t>> container_types;

template <class T> void test_containers(size_t size)
{
    Testee<T> t;
    t.container = T(size,1);

    BOOST_CHECK_EQUAL(t.f(), size);
}

// test on all container types but …
Run Code Online (Sandbox Code Playgroud)

c++ boost boost-test

5
推荐指数
0
解决办法
314
查看次数