问题标签 [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 投票
1 回答
480 浏览

c++ - BOOST.TEST 在 dll 中使用 BOOST 测试用例并在 exe 中使用 runner 时遇到问题

我正在使用 Boost.Test 进行单元测试。我想将所有测试代码放在一个单独的 dll 中,这样测试代码就不会被发布,我的生产代码也不会膨胀。

为此,我考虑在 dll 中有手动测试用例并让 dll 导出一个方法

从我的测试运行器中,我可以在我的 init_unit_test_suite 中调用这个方法

但是测试用例没有被拾取。但是,我在本地测试运行器中的测试用例正在被拾取。

我正在与 BOOST 静态库链接并通过定义拥有自己的主库

在我的测试跑步者中。

这个组合有什么问题?我怎样才能在单独的 dll 中实现测试用例的隔离,并且还有一个外部测试运行器?

编辑:我用来调用测试用例的命令行是:

我用上面的命令行得到的错误是:

0 投票
0 回答
153 浏览

c++ - 有没有办法在不重新编译的情况下控制 boost output_test_stream “记录与检查”的行为?

我正在使用 Boost.Test 类output_test_stream来验证我的应用程序是否提供了预期的输出。此类提供了一种简单的方法,通过调用该方法来比较文件中的输出数据与已知良好的记录数据match_pattern()。这是我的使用方法:

所需的输出在文件 test_output_ref.txt 中。调用match_pattern()ostrg数据与文件中的数据进行比较。如果变量pattern_test为假,则调用match_pattern()将改为将数据保存ostrg到 ref 数据文件test_output_ref.txt中。

我使用它的方式是,我首先使用CREATE_TEST_PATTERNS定义的宏进行构建,然后运行测试程序(测试作为构建后步骤运行),将输出收集到一个文件中,目视检查输出文件以确保输出是正确,然后我重新构建未定义的测试CREATE_TEST_PATTERNS 程序。在此模式下,测试将先前记录的预期结果与测试运行生成的结果进行比较。到目前为止,一切都很好。

我的问题是:有没有一种方法可以控制记录/检查行为而match_pattern()无需重新编译测试程序?

0 投票
0 回答
760 浏览

c++ - Setting the library path for Boosts tests with CMake in Windows

I've started a little project on GitHub for an OpenSceneGraph plugin. Here, I plan on learning how to setup projects with CMake, unit testing with Boost.Test and continuous integration, with Travis-CI.

It has this structure:

I have two machines: my laptop, with Linux Mint 16 and g++ 4.8, and my work computer, with Windows 8.1, the MinGW suite and g++ 4.5.

The project (development branch!) builds fine with make, but afterwards, when I try to run the tests with make test in Windows I always end getting these errors:

and in the terminal:

Whereas in Linux (tried in Linux Mint 16 and in the Travis-CI machine, it works).

The "root" CMakeFile:

The CMakeFile for the test:

I'm trying to tell CMake to use the newly-generated osgGML library in the build directory when linking the test executable (I have checked, libosgGML.dll is in ${CMAKE_BINARY_DIR}. In this version of the file, I added the rpath to the library. In a previous one, aside from -Wl,-rpath,<library_dirs> I also specified the -L<library_dirs> right after that.

I've tried to link directly the dll's too, but nothing worked.

How can I tell the test executable to "find" the libraries in their respective directories, instead of copying them to the executable dir?

0 投票
1 回答
333 浏览

c++ - Boost.Tests 入口点在哪里?

我正在使用 JetBrain 的 CLion 并尝试运行一些增强测试,但它们不会。这是我的代码:

和我的 cmake 文件:

问题是输出将只是“主要”。并且测试不会启动。我想我不需要“主要”功能。它应该是自动创建的。但是如果我删除它,我会收到以下错误:

有人可以帮帮我吗 ?

0 投票
2 回答
907 浏览

c++ - Boost.Test 显示测试持续时间

我正在使用 Boost.Test (1.60.0) 来测试我的项目。为了确定最耗时的测试,我想知道每个测试的测试持续时间(以毫秒为单位)。所有测试消耗的总时间也会很好。

Boost.Test 有这样的功能吗?如果不是,我如何自己实施这样的时间测量?

0 投票
2 回答
3580 浏览

c++ - Boost.Test 检查指针是否为空

我有以下测试:

编译失败是因为

/xxx/include/boost/test/tools/detail/print_helper.hpp:50:14: 错误:'operator<<' 的重载不明确(操作数类型是'std::ostream {aka std::basic_ostream}' 和' std::nullptr_t')

出了什么问题,我应该如何测试空指针?

0 投票
2 回答
2159 浏览

c++ - C++ Boost.Test - 应该在哪里创建类对象来测试它的方法?

我正在做使用 Boost 来测试代码的 exercism.io C++ 挑战。我有 3 个文件,bob.cppbob.hbob_test.cpp(都在下面)。没有课程,我可以让测试运行良好。但是一旦我需要测试一个类方法,比如bob_test.cpp尝试测试的 in ,bob::hey([arg])我就会得到错误:

所以我显然需要在bob某个地方实例化(例如:bob bob;......我没有选择名称)但我就是不知道在哪里做。Boost 测试框架提供了它自己的main功能(这意味着我不提供),所以我不能在那里做,我有点期望 Boost 会实例化对象本身,但它似乎没有。我尝试插入bob bob;bob_test.cpp导致bob.cpp相同的错误。我的问题是,我应该在哪里实例化一个bob可以用于的对象bob_test.cpp?作为一个 C++ 菜鸟,我的直觉说它应该在 . bob_test.cpp,但我也很有信心我不应该编辑那个文件。

鲍勃.cpp

鲍勃.h

bob_test.cpp(仅提供导致错误的第一个测试(简化),实际测试略有不同,我只是想让设置正常工作)

0 投票
1 回答
95 浏览

c++ - Boost.Test - 如何检查交叉点上的两个向量?

我正在寻找检查两个向量是否相交的最佳方法。

一个嵌套循环,如

可以完成这项工作,但它看起来不像 Boost.Test-ish 方式。看一下Boost.Test都没有太大帮助,因为唯一预定义的测试用例是BOOST_CHECK_EQUAL_COLLECTIONS

更新

0 投票
2 回答
271 浏览

c++ - 在 PVS-Studio 中的 BOOST_REQUIRE 之后将变量标记为非 NULL

我正在使用 PVS-Studio 来分析我的测试代码。通常有以下形式的构造

但是我仍然收到V522 There might be dereferencing of a potential null pointer 'animal'最后一行的警告。

我知道将函数标记为“不返回 NULL”是可能的,但是否也可以将函数标记为有效的 NULL 检查或使 PVS-Studio 以其他方式意识到animal不能为 NULL 之后BOOST_REQUIRE(animal);

assert如果首先通过任何风味检查指针,也会发生这种情况。

0 投票
1 回答
1114 浏览

c++ - 带有 CLion 的 Boost.TEST:“测试框架意外退出”

我在 mac os mohave 上使用 CLion。我试图将 Boost.TEST 添加到我的 c++ 项目中,但 IDE 抛出“测试框架意外退出”。

这是我的 CMakeLists:

和一个简单的测试:

jetbrains 网站上的说明是关于使用 Boost.TEST 的虚假说明,我在网上找到的针对此问题的所有修复程序都已过时。

我使用与自制软件一起安装的 Boost v.1.67.0。

控制台输出:

测试于 09:48 开始 ... .../sequences --run_test=test --logger=HRF,all --color_output=false --report_format=HRF --show_progress=no 你好,世界!进程以退出代码 0 结束

感谢所有帮助和建议!

感谢帮助。我最终为测试创建了一个模板项目。然后我使用实际代码将此项目复制到我的项目中,并将 add_subdirectory( name_of_the_directory_with_boost_test_project ) 添加到 CMakeFile 中。

之后,您将在 CLion 中获得“运行所有测试”功能。