问题标签 [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.
boost - 使用测试 dll 和生产 dll 时的链接问题
我想为 DLL 的内部组件编写单元测试,并且在测试项目中我只能访问导出的符号。我也想测试内部类,我不想仅仅为了测试而导出它们。我正在使用 boost 测试、visual studio 10 和动态链接。我得到的信息是
有任何想法吗?
c++ - BOOST_CHECK_EQUAL 与对和自定义运算符 <<
当尝试执行 BOOST_CHECK_EQUAL(pair, pair) 时,gcc 没有找到 pair 的流运算符,尽管声明了它。有趣的是 std::out 找到了运算符。
这不会与错误一起编译:
c++ - 我应该将单元测试放在单独的库中吗?单独的子目录?
我有一个大型代码库,其中包含一些(太少)单元测试;我正在向库中添加代码,尝试对新代码进行单元测试(我还想在将来为旧代码添加单元测试,当我有更多经验时)。
我们目前使用自定义(不是很精细)的单元测试框架;我想切换到boost.test
.
我的图书馆布局是:
mylib1(300 个文件,70000 行代码)
- 源代码
- 富
- foo.cpp
- foo_part.cpp
- foo_part.h
- UnitTests -我应该把它移到外面
mylib
吗?- foo_test1.cpp
- foo_test2.cpp
- foo_test3.cpp
- 酒吧
- 酒吧.cpp
- bar_part.cpp
- bar_part.h
- UnitTests -它属于这里吗?
- bar_test1.cpp
- bar_test2.cpp
- bar_test3.cpp
- 富
- 包括
- foo.h
- 酒吧.h
- 源代码
mylib2(70 个文件,7000 行代码)
- 看起来像上面的mylib1
单元测试框架
- 源代码
- MockObject1.cpp -它属于这里吗?
- Asserter.cpp -
boost.test
将替换它 - TestFixture.cpp -
boost.test
将替换它
- 包括
- 模拟对象1.h
- Asserter.h -
boost.test
将替换它 - TestFixture.h -
boost.test
将替换它
- 源代码
我在这里问以下问题:
- 单元测试应该是
mylib
DLL 的一部分吗?(我链接mylib1
到mylib2
一个 DLL 中) - 单元测试的源代码应该位于
mylib1
目录下吗? - 既然我有
mylib1
andmylib2
,那么相应的单元测试应该如何定位 - 在同级目录中,一起等等? - 我应该把模拟对象的源代码放在哪里?(他们同时提供
mylib1
和mylib2
)
c++ - Boost.Test 自定义测试总结
有没有办法在运行时使用 Boost Unit Testing 框架读取测试结果(所有通过失败的断言)?
我想要的是生成自定义测试日志,并在每次运行测试后以自定义的人类可读格式将其输出到控制台。
c++ - 何时在 Boost Test 库中使用手动注册?
我总是使用 Boost Test 自动注册。现在我想知道,手动注册是做什么用的?是否存在自动注册无法处理的情况?
补充说明一下,这次我也将使用turtle 进行模拟。
编辑:似乎我的问题不清楚,更准确地说:
- 我什么时候应该使用手动注册而不是自动注册?
- 我为什么要这样做?哪些现实生活中自动注册是不够的?
c++ - 提升单元测试 cpp 文件在库中看不到一个目标文件
我有一个 test.cpp 文件,是为使用 boost 单元测试而编写的。
我正在尝试将此 test.cpp 与名为 liba 的库链接。
不断给出错误消息,表明我的 liba 中的一个类未声明。同时,可以找到同一个库中的另一个类。
作为一个积极的控制,我把这个库和我的主文件联系起来,它工作得很好。
通过编译非常好。
看起来我的测试文件看不到我编译的库中一个特定类的文件,但我的主文件完全可以访问。谁能给我一些建议?
main - 链接器使用 Boost.Test 选择“错误”的 main
使用 Boost.Test 时,通常不需要定义main()
函数,因为 Boost.Test 自己提供了一个。
我最近不得不将我的项目转换为使用 3rd 方库的静态链接(在 VS2010 上)。自然,我必须链接到多个.lib
s 以便构建成功,并且我的构建运行得很好。
然而,当我运行我的测试项目时,发生了一些非常奇怪的事情。似乎.lib
我的一个依赖库所需的第 3 方之一(libpng)包含一个测试文件,其中main()
定义了一个函数(pngtest.c
如果你必须知道的话)。
由于我的项目没有main()
功能,因此链接器选择了该功能作为我的“测试”应用程序。因此,我的测试都没有运行。
有谁知道我如何防止这种情况发生?如何告诉链接器/编译器使用 Boost.Test main()
?
boost - Boost 测试框架返回码
unit_test_main
Boost Testing Framework的函数返回码是什么意思?
c++ - BOOST 单元测试堆栈溢出
我现在正在使用Boost Unit Test为我的项目执行单元测试。每次运行单元测试时,都会遇到内存堆栈问题。我调试到 BOOST 库的源代码,发现问题来自于在 unit_test_suite.hpp 文件中调用以下代码:
我从VC10得到的错误信息是:
我想知道测试程序有什么问题。谢谢!
编辑根据我查看代码的建议,发生了非常奇怪的事情:如果测试套件是在与 main() 相同的程序中定义的,它可以工作;但是,如果测试套件来自 .dll,则会发生错误。我列出以下代码来说明我的问题:
上面的代码工作得很好。但如果测试套件来自 .dll,例如:
然后,如果我使用以下代码调用此测试套件:
恼人的堆栈溢出错误将会发生。
问题总结
如果我将 boost 单元测试库(带有定义-DBOOST_ALL_DYN_LINK -DBOOST_TEST_NO_MAIN -DBOOST_TEST_DYN_LINK -DBOOST_ALL_NO_LIB
)和正在运行的可执行程序与相同的动态运行时库(多线程调试 Dll(MDd))链接起来,它将起作用。
如果 boost 单元测试库(带定义-DBOOST_ALL_DYN_LINK -DBOOST_TEST_NO_MAIN -DBOOST_TEST_DYN_LINK -DBOOST_ALL_NO_LIB
)和运行的可执行程序编译链接同一个静态运行时库(Multi-thred Debu (MTd)),我会崩溃,但崩溃不同于我在上面报道的那个:
如果 boost 构建为静态库(具有 的定义-DBOOST_TEST_NO_MAIN -DBOOST_ALL_NO_LIB
),并且 boost 库和可执行程序都使用相同的动态运行时库 (MDd) 构建。将发生以下崩溃:
如果 boost 构建为静态库(具有 的定义-DBOOST_TEST_NO_MAIN -DBOOST_ALL_NO_LIB
),并且 boost 库和可执行程序都使用相同的静态运行时库 (MTd) 构建。将发生以下崩溃:
c++ - 有没有办法并行运行 C++ 单元测试测试?
我现在使用 Boost Test 已经很长时间了,但最终我的测试运行速度太慢了。由于每个测试都是高度并行的,我希望它们与我的所有内核同时运行。
有没有办法使用 Boost Test Library 做到这一点?我没有找到任何解决方案。我试图查看如何编写自定义测试运行程序,但我没有太多关于这一点的文档:(
如果没有办法,有人知道一个好的 C++ 测试框架来实现这个目标吗?我在想 Google Test 可以完成这项工作,但显然它也不能并行运行测试。即使该框架的功能比其他更知名的框架少,也不是问题,我只需要简单的断言和多线程执行即可。
谢谢