问题标签 [boost-test]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
116242 浏览

c++ - CMake:带有单元测试的项目结构

我正在尝试构建我的项目以包含生产源(在src子文件夹中)和测试(在test子文件夹中)。我正在使用 CMake 来构建它。作为一个最小的例子,我有以下文件:

CMakeLists.txt:

src/CMakeLists.txt:

src/sqr.h

src/sqr.cpp

src/main.cpp - 使用 sqr,没关系

测试/CMakeLists.txt:

测试/test.cpp:

几个问题:

  1. 这种结构有意义吗?构建此代码时的最佳实践是什么?(我来自 C# 和 java,从某种意义上说它更容易)
  2. 我不喜欢我必须在文件中列出文件src夹中的所有test/CMakeLists.txt文件。如果这是一个图书馆项目,我只会链接图书馆。有没有办法避免列出来自其他项目的所有 cpp 文件?
  3. 线路enable_testing()add_test(MyTest test)做什么?我没有看到任何效果。如何从 CMake(或 CTest)运行测试?
  4. 到目前为止,我只是cmake .在根文件夹中运行,但这造成了到处都是临时文件的混乱。如何以合理的结构获得编译结果?
0 投票
1 回答
113 浏览

c++ - 如何检查 Boost Test 框架中双精度值的前 15 个相关数字是否相同?

我尝试使用似乎是为这项工作设计的:BOOST_CHECK_CLOSE,所以我有以下测试:

但是,第一次检查失败并出现以下错误:

当我做数学时,我得到:

小于 1e-14。我在这里做错了什么?

0 投票
1 回答
2518 浏览

c++ - Visual Studio 中的 Boost 测试

我正在尝试在 Visual Studio 2010 中编译简单的单元测试项目。我有一个 testrunner.cpp:

和exampletests.cpp

此示例在 Linux 中运行良好,但此处无法编译:

我做错了什么,我该如何解决?

编辑:应用 Arne Mertz 的答案后,我得到:

0 投票
1 回答
5344 浏览

c++ - 升压测试和异步 IO:地址内存访问冲突:故障地址没有映射

我正在尝试为 tcpip 的异步 I/O 设置升压测试。

我发送 tcp 信息的功能:

现在,如果我只是在主线程中运行它(不运行增强测试),这个函数就可以正常工作

我的升压测试功能如下所示:

它失败并出现以下错误:

在测试此类异步功能时我应该注意什么?

我的构建信息是:


编辑:

我也试过用以下方式修改它..但仍然得到同样的错误:

0 投票
1 回答
1625 浏览

boost - 使用 cmake 构建升压测试时遇到问题

我对 C++、Boost 测试和 CMake 还很陌生,所以请原谅我在这里的绊脚石。

这是我的顶级 CMakeLists.txt

这是我的测试目录中的 CMakeLists.txt,其中包含 TestRunner.cpp 和 types_test.cpp

TestRunner.cpp 看起来像

当我运行生成的makefile时,我得到

搜索后,我尝试在我的 add_executable 行之前添加这一行:

但是,添加它会导致巨大的“架构 x86_64 的未定义符号”错误,抱怨字符串、ostream、缺少 vtable 等。

我应该补充一点,一开始我似乎并不需要系统库,但是完全忽略它也会产生巨大的未定义符号错误。

有人知道我做错了什么吗?我在使用 gcc 4.7 的 Mountain Lion 上。

提前感谢您的帮助。

编辑以尝试 Kleist 的建议:

所以,如果改成这个

我得到这个结果

无论我是否包含 link_directories 行,都会发生这种情况。

编辑:包括 make VERBOSE=1 结果

我省略了其余的错误,因为它看起来与“未定义的符号...”之后的最后一个错误相同。

0 投票
1 回答
1031 浏览

c++ - 处理绝对差异的 BOOST_CHECK_CLOSE 版本

是否有一个版本的 BOOST_CHECK_CLOSE 可以使用绝对差异而不是百分比?在某些情况下,绝对差异更有意义,例如当我们使用金钱时(是的,我知道 double 不是最好的类型),我们可能会检查答案是否适合最接近的一分钱。还有很多其他的例子。

使用例如 BOOST_CHECK_SMALL 自己编写其中一个是相当简单的,但我正确宏的详细输出会使错误更容易追踪。

0 投票
1 回答
1058 浏览

c++ - boost测试单元不能调用mpi函数

我已经仔细查看过,但找不到任何关于这个问题的参考。

我编写了一个 c++ 程序,我正在使用 boost/unit 进行测试。串行版本工作正常,单元测试工作正常。
现在,我通过一个函数使程序并行化,该函数与 MPI 进行了令人尴尬的并行工作。如果写下我自己的调用并行函数的测试——让我们称之为 parafunction——它运行良好,MPI 运行正常。
编译是用 mpic++ 完成的,我使用 mpixec 来运行程序。

但是,如果我在 boost 测试用例中调用 parafunction,MPI 就会出错,测试会被多次启动,并且在多次MPI::Init调用时进程会崩溃。这是我得到的错误示例:

在调用 MPI_FINALIZE 之后调用 MPI_comm_size() 函数。

MPI 标准不允许这样做。

您的 MPI 作业现在将中止。

我的测试用例在 test_unit 上,由 master_test_suite 自动处理。正如我所说,没有并行化它工作得很好。

辅助函数调用MPI::Initand MPI::Finalize,并且文件的其他函数不应该做任何与 MPI 相关的事情。

有没有人遇到过类似的问题?

我的测试运行时间很长,因此我真的可以使用我的程序的并行版本!

谢谢你的帮助

0 投票
3 回答
4265 浏览

c++ - BOOST_CHECK_NO_THROW 如何打印异常消息

当我使用

并抛出异常,它显示抛出异常,但绝不会像这样的异常消息

是否也可以打印异常消息,即返回的字符串my_exception.what()my_exception派生自std::exception和 重载what()

0 投票
2 回答
1123 浏览

c++ - Google 测试中的 BOOST_CHECK_EQUAL_COLLECTIONS

我一直试图在Google C++ 测试框架/gtest中找到一个断言,它等同于Boost Test Library中的BOOST_CHECK_EQUAL_COLLECTIONS断言。

然而; 没有成功。所以我的问题有两个:

  1. gtest是否有等效的断言?
  2. 如果不是:如何在gtest中断言容器内容?

编辑(稍作修改的答案):

0 投票
0 回答
41 浏览

c++ - CLOSE 和 CLOSE_FRACTION 的区别

谁能解释BOOST_CHECK_CLOSEBOOST_CHECK_CLOSE_FRACTION之间的区别?

我刚刚浏览了 boost.test 测试工具参考,我很确定它们有相同的描述。