问题标签 [boost-unit-test-framework]

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 投票
5 回答
16320 浏览

c++ - 如何将向量与 Boost.Test 进行比较?

我正在使用 Boost Test 对一些 C++ 代码进行单元测试。

我有一个值向量需要与预期结果进行比较,但我不想手动检查循环中的值:

主要问题是循环检查不打印索引,因此需要进行一些搜索才能找到不匹配的内容。

我可以在这两个向量上使用std::equalor std::mismatch,但这也需要大量的样板文件。

有没有更清洁的方法来做到这一点?

0 投票
2 回答
2716 浏览

boost - 针对 Boost 单元测试框架构建时的链接错误

我正在尝试通过构建一个独立的库来使用 Boost Unit Test Framework,如下所述:

http://www.boost.org/doc/libs/1_35_0/libs/test/doc/components/utf/compilation.html

所以我创建了一个包含上述文件的 VC 库项目并构建它,它成功了。然后我创建了一个测试项目并引用了我刚刚创建的库项目,但是当我尝试构建它时,我得到了以下链接错误:

它们似乎主要是由 Boost 调试库引起的,但我看不出我应该得到链接错误的原因,因为 Boost 调试库只需要作为头文件包含,而不是作为库链接!

有任何想法吗?!

0 投票
1 回答
498 浏览

c++ - 使用 MinGW 在 Eclipse 中提升单元测试不产生输出

我有一个非常简单的 Boost 单元测试,如下所示:

这编译得很好,没有任何问题。但是,当我运行应用程序时,控制台视图没有输出,并且控制台视图显示应用程序已终止。我尝试通过 将日志级别设置为程序参数--log_level=all,但没有效果。但是,当我从命令行运行我的可执行文件时,我看到了预期的输出。我也无法调试程序,这是一个非常关键的问题。我正在使用 Eclipse 3.7、MinGW 4.6 和 Boost 1.52。有什么想法吗?

编辑 这是我的编译器参数:

g++ -IC:\Boost\boost_1_52_0 -O0 -g3 -Wall -c -fmessage-length=0 -o src\Test1.o ..\src\Test1.cpp

g++ -LC:\Boost\boost_1_52_0\stage\lib -o MinGWUnitTestProject.exe src\Test1.o -llibboost_unit_test_framework-mgw46-d-1_52

0 投票
1 回答
644 浏览

unit-testing - 谷歌测试可以在windows上处理多线程测试输出吗

我刚刚遇到了在多个线程的输出不是原子的 Windows 上运行的boost 单元的问题,因此如果我将任何测试或消息放在主线程以外的任何线程中,它会破坏输出 XML,这会混淆 CI 系统。

我看不到任何增强单元选项来控制它,所以我想知道这是否是谷歌测试可以做的事情,这是否值得切换到谷歌测试(搜索维基没有找到我任何东西)。

还是我应该使用其他一些方法(在 linux 上从命令行运行测试以查看此输出时很有用。但我不希望它破坏我的 windows CI)?

0 投票
1 回答
480 浏览

boost - Boost 测试:获取错误计数

有没有办法在 Boost UTF 中获取当前测试用例的当前错误计数?

我想在我的测试用例中至少有一次检查失败的情况下执行代码。就像是:

(此宏不存在。)

0 投票
1 回答
500 浏览

c++ - BOOST_TEST_PASSPOINT 有什么作用?

谁能告诉我它的功能BOOST_TEST_PASSPOINT是什么?官方文档链接到错误的页面,并且在过去四年中一直存在

0 投票
2 回答
2576 浏览

c++ - 我能否仅针对 boost 单元测试的失败获取日志输出

我的应用程序中有一些日志记录(它恰好是 log4cxx,但我对此很灵活),并且我有一些使用 boost 单元测试框架的单元测试。当我的单元测试运行时,我会从通过和失败的测试中获得大量的日志输出(不仅仅是记录的提升断言,还有我自己的应用程序代码的调试日志)。我想让单元测试框架在通过的测试期间丢弃日志,并从失败的测试中输出日志(我在使用 python/nose 时逐渐欣赏这种行为)。

使用 boost 单元测试框架是否有一些标准的方法来做到这一点?如果没有,是否有一些测试开始/测试结束钩子可以用来缓冲我的日志并有条件地输出它们以自己实现这种行为?

0 投票
1 回答
573 浏览

c++ - 如何使用模板化函数作为 Boost::Unit-test 的自定义谓词

我正在尝试为 BOOST_CHECK_PREDICATE 构建一个自定义谓词,其中谓词本身是一个模板函数。我的示例如下所示:

使用 MS Visual C++ 2010 编译会出现以下错误:

3>..\boost_test\testSystem.cpp(42): 错误 C2780: 'bool boost::test_tools::tt_detail::check_frwd(Pred,const boost::unit_test::lazy_ostream &,boost::test_tools::const_string, size_t,boost::test_tools::tt_detail::tool_level,boost::test_tools::tt_detail::check_type,const Arg0 &,const char *,const Arg1 &,const char *,const Arg2 &,const char *,const Arg3 &,const char *,const Arg4 &,const char *)' : 需要 16 个参数 - 提供 10 个 3>
C:\Boost\include\boost-1_51\boost/test/test_tools.hpp(523) :参见 'boost::test_tools::tt_detail::check_frwd' 3>..\boost_test\testSystem.cpp(42) 的声明: 错误 C2780: 'bool boost::test_tools::tt_detail::check_frwd(Pred,const boost::unit_test::lazy_ostream &,boost::test_tools::const_string,size_t,boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type,const Arg0 &,const char *,const Arg1 &,const char *,const Arg2 &,const char *,const Arg3 &,const char *)' :需要 14 个参数 - 10提供 3> C:\Boost\include\boost-1_51\boost/test/test_tools.hpp(523) : 见声明 'boost::test_tools::tt_detail::check_frwd' 3>..\boost_test\testSystem.cpp (42): 错误 C2780: 'bool boost::test_tools::tt_detail::check_frwd(Pred,const boost::unit_test::lazy_ostream &,boost::test_tools::const_string,size_t,boost::test_tools::tt_detail::tool_level,boost::test_tools::tt_detail::check_type,const Arg0 &,const char *,const Arg1 &, const char *,const Arg2 &,const char *)' : 需要 12 个参数 - 提供 10 个 3> C:\Boost\include\boost-1_51\boost/test/test_tools.hpp(523) : 见 'boost: :test_tools::tt_detail::check_frwd' 3>..\boost_test\testSystem.cpp(42): error C2896: 'bool boost::test_tools::tt_detail::check_frwd(Pred,const boost::unit_test::lazy_ostream & ,boost::test_tools::const_string,size_t,boost::test_tools::tt_detail::tool_level,boost::test_tools::tt_detail::check_type,const Arg0 &,const char *,const Arg1 &,const char *)' : 不能使用函数模板'bool is_close_enough(const U &,const V &)' 作为函数参数 3> ..\boost_test\testSystem.cpp(18) : 参见 'is_close_enough' 的声明 3>..\boost_test\testSystem.cpp(42): error C2784: 'bool boost: :test_tools::tt_detail::check_frwd(Pred,const boost::unit_test::lazy_ostream &,boost::test_tools::const_string,size_t,boost::test_tools::tt_detail::tool_level,boost::test_tools::tt_detail: :check_type,const Arg0 &,const char *,const Arg1 &,const char *)' : 无法从“重载函数类型”中推断出“重载函数类型”的模板参数 3>check_frwd(Pred,const boost::unit_test::lazy_ostream &,boost::test_tools::const_string,size_t,boost::test_tools::tt_detail::tool_level,boost::test_tools::tt_detail::check_type,const Arg0 &, const char *,const Arg1 &,const char *)' : 无法从“重载函数类型”中推断出“重载函数类型”的模板参数 3>check_frwd(Pred,const boost::unit_test::lazy_ostream &,boost::test_tools::const_string,size_t,boost::test_tools::tt_detail::tool_level,boost::test_tools::tt_detail::check_type,const Arg0 &, const char *,const Arg1 &,const char *)' : 无法从“重载函数类型”中推断出“重载函数类型”的模板参数 3>
C:\Boost\include\boost-1_51\boost/test/test_tools.hpp(523) :参见 'boost::test_tools::tt_detail::check_frwd' 3>..\boost_test\testSystem.cpp(42) 的声明: 错误 C2780: 'bool boost::test_tools::tt_detail::check_frwd(Pred,const boost::unit_test::lazy_ostream &,boost::test_tools::const_string,size_t,boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type,const Arg0 &,const char *)' :需要 8 个参数 - 提供 10 个

有什么想法我在这里做错了吗?

0 投票
1 回答
2373 浏览

c++ - 类,BOOST_TEST_MODULE,BOOST_AUTO_TEST_SUITE:命名问题?

所以,我开始使用 boost 单元测试。当我尝试构建一个创建类实例的简单测试时,我得到一个编译错误。它在没有类实例的情况下工作正常。

编译错误信息是:

WT FomgFail_test.cpp:

WT FomgFail.hpp:

WT FomgFail.cpp:

如果我更改BOOST_AUTO_TEST_SUITE(WTFomgFail)为其他内容,例如BOOST_AUTO_TEST_SUITE(OMGreally).

#define BOOST_TEST_MODULE OMGreally此外,使用with时我没有收到错误消息BOOST_AUTO_TEST_SUITE(OMGreally)

所以,我的问题是,当使用 boost UTF 命名模块时,test_suite 和 class 明确禁止相同的东西?

0 投票
1 回答
9149 浏览

c++ - 如何让 BOOST_TEST_MESSAGE 显示在屏幕上?

我在 Boost 单元测试框架中摸索,并建立了一个基本的功能单元测试。我BOOST_TEST_MESSAGE用来让用户知道哪些测试正在运行,但消息不会显示在屏幕上。例如:

我试图定义BOOST_TEST_LOG_LEVELall但这没有效果。我从Boost log-level parameter page得到了这个想法,但我认为日志的概念可能与屏幕上实际显示的内容无关。有任何想法吗?