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

boost - 使用测试 dll 和生产 dll 时的链接问题

我想为 DLL 的内部组件编写单元测试,并且在测试项目中我只能访问导出的符号。我也想测试内部类,我不想仅仅为了测试而导出它们。我正在使用 boost 测试、visual studio 10 和动态链接。我得到的信息是

有任何想法吗?

0 投票
3 回答
3404 浏览

c++ - BOOST_CHECK_EQUAL 与对和自定义运算符 <<

当尝试执行 BOOST_CHECK_EQUAL(pair, pair) 时,gcc 没有找到 pair 的流运算符,尽管声明了它。有趣的是 std::out 找到了运算符。

这不会与错误一起编译:

0 投票
1 回答
1049 浏览

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将替换它

我在这里问以下问题:

  • 单元测试应该是mylibDLL 的一部分吗?(我链接mylib1mylib2一个 DLL 中)
  • 单元测试的源代码应该位于mylib1目录下吗?
  • 既然我有mylib1and mylib2,那么相应的单元测试应该如何定位 - 在同级目录中,一起等等?
  • 我应该把模拟对象的源代码放在哪里?(他们同时提供mylib1mylib2
0 投票
1 回答
479 浏览

c++ - Boost.Test 自定义测试总结

有没有办法在运行时使用 Boost Unit Testing 框架读取测试结果(所有通过失败的断言)?

我想要的是生成自定义测试日志,并在每次运行测试后以自定义的人类可读格式将其输出到控制台。

0 投票
4 回答
588 浏览

c++ - 何时在 Boost Test 库中使用手动注册?

我总是使用 Boost Test 自动注册。现在我想知道,手动注册是做什么用的?是否存在自动注册无法处理的情况?

补充说明一下,这次我也将使用turtle 进行模拟。

编辑:似乎我的问题不清楚,更准确地说:

  1. 我什么时候应该使用手动注册而不是自动注册?
  2. 我为什么要这样做?哪些现实生活中自动注册是不够的?
0 投票
0 回答
166 浏览

c++ - 提升单元测试 cpp 文件在库中看不到一个目标文件

我有一个 test.cpp 文件,是为使用 boost 单元测试而编写的。

我正在尝试将此 test.cpp 与名为 liba 的库链接。

不断给出错误消息,表明我的 liba 中的一个类未声明。同时,可以找到同一个库中的另一个类。

作为一个积极的控制,我把这个库和我的主文件联系起来,它工作得很好。

通过编译非常好。

看起来我的测试文件看不到我编译的库中一个特定类的文件,但我的主文件完全可以访问。谁能给我一些建议?

0 投票
2 回答
138 浏览

main - 链接器使用 Boost.Test 选择“错误”的 main

使用 Boost.Test 时,通常不需要定义main()函数,因为 Boost.Test 自己提供了一个。

我最近不得不将我的项目转换为使用 3rd 方库的静态链接(在 VS2010 上)。自然,我必须链接到多个.libs 以便构建成功,并且我的构建运行得很好。

然而,当我运行我的测试项目时,发生了一些非常奇怪的事情。似乎.lib我的一个依赖库所需的第 3 方之一(libpng)包含一个测试文件,其中main()定义了一个函数(pngtest.c如果你必须知道的话)。
由于我的项目没有main()功能,因此链接器选择了该功能作为我的“测试”应用程序。因此,我的测试都没有运行。

有谁知道我如何防止这种情况发生?如何告诉链接器/编译器使用 Boost.Test main()

0 投票
1 回答
1958 浏览

boost - Boost 测试框架返回码

unit_test_mainBoost Testing Framework的函数返回码是什么意思?

0 投票
1 回答
1871 浏览

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) 构建。将发生以下崩溃: 在此处输入图像描述

0 投票
4 回答
11310 浏览

c++ - 有没有办法并行运行 C++ 单元测试测试?

我现在使用 Boost Test 已经很长时间了,但最终我的测试运行速度太慢了。由于每个测试都是高度并行的,我希望它们与我的所有内核同时运行。

有没有办法使用 Boost Test Library 做到这一点?我没有找到任何解决方案。我试图查看如何编写自定义测试运行程序,但我没有太多关于这一点的文档:(

如果没有办法,有人知道一个好的 C++ 测试框架来实现这个目标吗?我在想 Google Test 可以完成这项工作,但显然它也不能并行运行测试。即使该框架的功能比其他更知名的框架少,也不是问题,我只需要简单的断言和多线程执行即可。

谢谢