问题标签 [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.
c++ - CMake:带有单元测试的项目结构
我正在尝试构建我的项目以包含生产源(在src
子文件夹中)和测试(在test
子文件夹中)。我正在使用 CMake 来构建它。作为一个最小的例子,我有以下文件:
CMakeLists.txt:
src/CMakeLists.txt:
src/sqr.h
src/sqr.cpp
src/main.cpp - 使用 sqr,没关系
测试/CMakeLists.txt:
测试/test.cpp:
几个问题:
- 这种结构有意义吗?构建此代码时的最佳实践是什么?(我来自 C# 和 java,从某种意义上说它更容易)
- 我不喜欢我必须在文件中列出文件
src
夹中的所有test/CMakeLists.txt
文件。如果这是一个图书馆项目,我只会链接图书馆。有没有办法避免列出来自其他项目的所有 cpp 文件? - 线路
enable_testing()
和add_test(MyTest test)
做什么?我没有看到任何效果。如何从 CMake(或 CTest)运行测试? - 到目前为止,我只是
cmake .
在根文件夹中运行,但这造成了到处都是临时文件的混乱。如何以合理的结构获得编译结果?
c++ - 如何检查 Boost Test 框架中双精度值的前 15 个相关数字是否相同?
我尝试使用似乎是为这项工作设计的:BOOST_CHECK_CLOSE
,所以我有以下测试:
但是,第一次检查失败并出现以下错误:
当我做数学时,我得到:
小于 1e-14。我在这里做错了什么?
c++ - Visual Studio 中的 Boost 测试
我正在尝试在 Visual Studio 2010 中编译简单的单元测试项目。我有一个 testrunner.cpp:
和exampletests.cpp
此示例在 Linux 中运行良好,但此处无法编译:
我做错了什么,我该如何解决?
编辑:应用 Arne Mertz 的答案后,我得到:
c++ - 升压测试和异步 IO:地址内存访问冲突:故障地址没有映射
我正在尝试为 tcpip 的异步 I/O 设置升压测试。
我发送 tcp 信息的功能:
现在,如果我只是在主线程中运行它(不运行增强测试),这个函数就可以正常工作
我的升压测试功能如下所示:
它失败并出现以下错误:
在测试此类异步功能时我应该注意什么?
我的构建信息是:
编辑:
我也试过用以下方式修改它..但仍然得到同样的错误:
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 结果
我省略了其余的错误,因为它看起来与“未定义的符号...”之后的最后一个错误相同。
c++ - 处理绝对差异的 BOOST_CHECK_CLOSE 版本
是否有一个版本的 BOOST_CHECK_CLOSE 可以使用绝对差异而不是百分比?在某些情况下,绝对差异更有意义,例如当我们使用金钱时(是的,我知道 double 不是最好的类型),我们可能会检查答案是否适合最接近的一分钱。还有很多其他的例子。
使用例如 BOOST_CHECK_SMALL 自己编写其中一个是相当简单的,但我正确宏的详细输出会使错误更容易追踪。
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::Init
and MPI::Finalize
,并且文件的其他函数不应该做任何与 MPI 相关的事情。
有没有人遇到过类似的问题?
我的测试运行时间很长,因此我真的可以使用我的程序的并行版本!
谢谢你的帮助
c++ - BOOST_CHECK_NO_THROW 如何打印异常消息
当我使用
并抛出异常,它显示抛出异常,但绝不会像这样的异常消息:
是否也可以打印异常消息,即返回的字符串my_exception.what()
?my_exception
派生自std::exception
和 重载what()
。
c++ - Google 测试中的 BOOST_CHECK_EQUAL_COLLECTIONS
我一直试图在Google C++ 测试框架/gtest中找到一个断言,它等同于Boost Test Library中的BOOST_CHECK_EQUAL_COLLECTIONS断言。
然而; 没有成功。所以我的问题有两个:
编辑(稍作修改的答案):
c++ - CLOSE 和 CLOSE_FRACTION 的区别
谁能解释BOOST_CHECK_CLOSE和BOOST_CHECK_CLOSE_FRACTION之间的区别?
我刚刚浏览了 boost.test 测试工具参考,我很确定它们有相同的描述。