通过动态链接和手动设置增强单元测试框架

2023-12-26

我正在尝试设置一个具有动态链接和手动设置的 boost 单元测试框架(不是 BOOST_AUTO_TEST_CASE)。我做了一个简单的例子来重现我的错误:

//SomeLib.cpp
#define BOOST_TEST_DYN_LINK
#include "SomeLib.h"
int getImportantNumber(){return 1729;}
int increaseNumber(int number){return number+1;}

//SomeTests.cpp
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>
#include "lib/SomeLib.h"
#include "SomeTests.h"
using namespace boost::unit_test;

void SomeTests::numberIs1729(){
    BOOST_CHECK(getImportantNumber() == 1729);
}
void SomeTests::increase(){
    BOOST_CHECK(increaseNumber(1) == 2);
}

//ChainedInc.cpp
#define BOOST_TEST_DYN_LINK
#include <boost/test/unit_test.hpp>
#include "lib/SomeLib.h"
#include "ChainedInc.h"
using namespace boost::unit_test;

void ChainedInc::incinc(){
    BOOST_CHECK(increaseNumber(increaseNumber(1)) == 3);
}
void ChainedInc::incincinc(){
    BOOST_CHECK(increaseNumber(increaseNumber(increaseNumber(1))) == 4);
}

//Master.cpp
#define BOOST_TEST_DYN_LINK
#include <boost/bind.hpp>
#include <boost/smart_ptr.hpp>
#include <boost/test/unit_test.hpp>
#include "SomeTests.h"

using namespace boost::unit_test;
test_suite* init_unit_test_suite( int, char** )
{
    test_suite* ts1 = BOOST_TEST_SUITE( "Suite1" );

    boost::shared_ptr<SomeTests> test1 ( new SomeTests());
    ts1->add( BOOST_TEST_CASE( boost::bind(&SomeTests::numberIs1729, test1)));
    ts1->add( BOOST_TEST_CASE( boost::bind(&SomeTests::increase, test1)));

    framework::master_test_suite().add( ts1 );
    return 0;
}

当我运行此代码时,出现以下错误:

/usr/bin/g++ test/ChainedInc.cpp.1.o test/Master.cpp.1.o test/SomeTests.cpp.1.o lib/SomeLib.cpp.2.o -o /home/mto/src/manualBoost/build/test/app -Wl-Bdynamic -L/usr/lib64 -lboost_unit_test_framework

/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status

这通常可以通过添加来解决

#define BOOST_TEST_DYN_LINK

所有测试文件和

#define BOOST_TEST_MODULE something

精确到一个任意测试文件。然而,当手动注册增强测试时,最后一个定义不能很好地工作。如果我在使用这个定义后尝试运行我的测试,我会得到

build/test/app

Test setup error: test tree is empty

See Boost 测试不 init_unit_test_suite https://stackoverflow.com/questions/17024143/boost-test-does-not-init-unit-test-suite。是否可以使用boost手动注册和动态链接来对抗boost?


BOOST_TEST_MAIN 只能在一个模块中定义。它引入了 main 的定义。如果您在多个模块中定义它,那么您将有多个定义的 main.

See my 文档重写 http://user.xmission.com/~legalize/boost.test/libs/test/doc/html/index.html有关这些配置宏的解释。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过动态链接和手动设置增强单元测试框架 的相关文章

  • 是否需要销毁运算符删除的形式才能真正销毁对象?

    C 20 添加了破坏形式operator delete区别于std destroying delete t范围 它导致delete表达式在调用之前不再销毁对象operator delete 目的是在显式调用对象的析构函数和释放内存之前 允许
  • 静态构造函数和 BeforeFieldInit?

    如果类型没有静态构造函数 则将执行字段初始值设定项 就在使用该类型之前 或者在某个时间点突发奇想 运行时 为什么这段代码 void Main start Dump Test EchoAndReturn Hello end Dump clas
  • 是否可以使用 http url 作为 DirectShow .Net 中源过滤器的源位置?

    我正在使用 DirectShow Net 库创建一个过滤器图 该过滤器图通过使用 http 地址和 WM Asf Writer 来流式传输视频 然后 在网页上 我可以使用对象元素在 Windows Media Player 对象中呈现视频源
  • 在 C++ 代码中转换字符串

    我正在学习 C 并开发一个项目来练习 但现在我想在代码中转换一个变量 字符串 就像这样 用户有一个包含 C 代码的文件 但我希望我的程序读取该文件并插入将其写入代码中 如下所示 include
  • 如何向 Mono.ZeroConf 注册服务?

    我正在尝试测试 ZeroConf 示例http www mono project com Mono Zeroconf http www mono project com Mono Zeroconf 我正在运行 OpenSuse 11 和 M
  • if constexpr 中的 not-constexpr 变量 – clang 与 GCC

    struct A constexpr operator bool const return true int main auto f auto v if constexpr v A a f a clang 6 接受该代码 GCC 8 拒绝它
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • LinkLabel 无下划线 - Compact Framework

    我正在使用 Microsoft Compact Framework 开发 Windows CE 应用程序 我必须使用 LinkLabel 它必须是白色且没有下划线 因此 在设计器中 我将字体颜色修改为白色 并在字体对话框中取消选中 下划线
  • 让网络摄像头在 OpenCV 中工作

    我正在尝试让我的网络摄像头在 Windows 7 64 位中的 OpenCV 版本 2 2 中捕获视频 但是 我遇到了一些困难 OpenCV 附带的示例二进制文件都无法检测到我的网络摄像头 最近我发现这篇文章表明答案在于重新编译一个文件 o
  • 对于 C# Express 用户来说,有哪些好的工具可以识别可能重复的代码? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 也可以看看 有什么工具可以检查重复的 VB NET 代码吗 https stackoverflow c
  • 如何从 Boost.PropertyTree 复制子树

    我有一些boost property tree ptree 我需要树来删除一些具有特定标签名称的元素 例如 xml 表示源ptree如下
  • 当Model和ViewModel一模一样的时候怎么办?

    我想知道什么是最佳实践 我被告知要始终创建 ViewModel 并且永远不要使用核心模型类将数据传递到视图 这就说得通了 让我把事情分开 但什么是Model 和ViewModel一模一样 我应该重新创建另一个类还是只是使用它 我觉得我应该重
  • 调用 .ToArray() 时出现 ArgumentException

    我有一个经常被清除的列表 代码完全是这样的 VisitorAgent toPersist List
  • 如何在C#中控制datagridview光标移动

    我希望 datagridview 光标向右移动到下一列 而不是在向单元格输入数据后移动到下一行 我试图通过 dataGridView1 KeyDown 事件捕获键来控制光标 但这并不能阻止光标在将数据输入到单元格后移动到下一行 提前感谢你的
  • C:设置变量范围内所有位的最有效方法

    让我们来int举个例子 int SetBitWithinRange const unsigned from const unsigned to To be implemented SetBitWithinRange应该返回一个int其中所有
  • 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

    我收到的错误如下 2017 年 4 月 20 日构建 13 23 38 C Windows Microsoft NET Framework v4 0 30319 Microsoft Common targets 1605 5 警告 MSB3
  • 如何高效计算连续数的数字积?

    我正在尝试计算数字序列中每个数字的数字乘积 例如 21 22 23 98 99 将会 2 4 6 72 81 为了降低复杂性 我只会考虑 连续的数字 http simple wikipedia org wiki Consecutive in
  • Streamwriter 覆盖 txt 文件中的文本

    有没有什么方法可以重新打开流写入器而不创建新的写入对象 因为此时 当调用 WriteOdd 时 streamwriter 正在覆盖在它之前调用的 WriteEven public void WriteEven StreamWriter wr
  • 从后面的代码添加外部 css 文件

    我有一个 CSS 文件 例如 SomeStyle css 我是否可以将此样式表文档从其代码隐藏应用到 aspx 页面 您可以将文字控件添加到标头控件中 Page Header Controls Add new System Web UI L
  • 声明一个负长度的数组

    当创建负长度数组时 C 中会发生什么 例如 int n 35 int testArray n for int i 0 i lt 10 i testArray i i 1 这段代码将编译 并且启用 Wall 时不会出现警告 并且似乎您可以分配

随机推荐

  • 在 PHP 中实现切削库存算法

    我需要实施下料问题 http en wikipedia org wiki Cutting stock problem与 php 脚本 由于我的数学能力不是很好 所以我只是想用暴力来解决 从这些参数开始 inventory 是可剪切的长度数组
  • 使用斯坦福 CoreNLP 解决共指问题 - 无法加载解析器模型

    我想做一项非常简单的工作 给定一个包含代词的字符串 我想解析它们 例如 我想把这句话 Mary has a Littlelamb She is Cute 在 玛丽有一只小羊羔 玛丽很可爱 中 我尝试过使用斯坦福 CoreNLP 但是 我似乎
  • 如何使用 jQuery 检测 URL 更改

    jQuery 如何检测 url 的更改 例如 如果用户转到某个页面site com faq 没有任何显示 但如果他去site com faq openjquery 检测到它并执行某些操作 尝试这个 window on hashchange
  • 为什么 dplyr 的 top_n() 不起作用?

    我有一个名为的数据框df City State Price Dogs Portland OR 75 1 Portland OR 100 3 San Diego CA 12 4 San Diego CA 23 5 I used dplyr s
  • 在 Blazor wasm 中自动将访问令牌附加到 HTTP 客户端

    我正在为我的 Blazor wasm 应用程序使用开放 id 连接身份提供程序 并且希望将访问令牌附加到 http 客户端 如中所述this https learn microsoft com en us aspnet core blazo
  • 无法连接相机服务

    我正在尝试访问手机上的相机 在将代码放入小部件之前 我正在编写一个简单的存根应用程序 我还没有走多远 代码总是抛出运行时异常 无法连接到相机服务 错误的代码 从公共软件示例中截取 是 Override public void onResum
  • Oracle - 删除重复项

    我发现了以下删除重复项的方法 DELETE FROM table name A WHERE a rowid gt ANY SELECT B rowid FROM table name B WHERE A col1 B col1 AND A
  • 如何将 D3.js 与 Angular 2 的渲染器 API 集成

    我已成功将 Angular 2 Alpha 44 与 D3 js 集成
  • 如何在 C# Windows 应用程序中获取网格的列值?

    如何在 C Windows 应用程序中获取网格的列值 当我单击单元格时 它应该获得列值 private void gridAgentDetails Click object sender EventArgs e for int i 0 i
  • 使用 React-Modal (react js) 传递 Props (img url )

    我需要将图像 url 传递给 React js 中的模态 就像 单击 imgae 附件 中的项目时 它会显示带有所选项目图像的模式 但它无法通过传递 img item document 显示我的图像数据 下面是我的代码 DepositRec
  • Tensorflow @tf.function - 无法在 Tensorflow 图形函数内获取会话

    我正在尝试将 tf function 指令与 Keras 功能 API 结合使用 在简单神经网络的训练步骤中创建 TF 图 我使用的是与 Python 3 7 一起安装的 Tensorflow v 2 1 0 但是 我得到了标题中所示的运行
  • 为什么我无法创建 TSubclassOf<> 以在 SpawnActor() 函数中使用?

    我正在 UE4 中制作激光标签游戏 但使用 TSubclassOf 时遇到很多困难 首先 我在 LaserTagCharacter h 文件中声明 LaserClass 如下所示 我还创建了一个名为 OnFire 的函数 当玩家使用 Fir
  • kotlinCompilerVersion 已弃用

    我刚刚使用 Empty Compose Activity Android Studio 2020 3 1 Canary 14 模板启动了一个新的 Jetpack Compose 项目 但我在我的应用程序中收到以下警告build gradle
  • 从 rake 任务访问 Rails 模型

    如何从 Rails rake 任务访问模型对象 如果我初始化我的 rufus 调度程序 scheduler Rufus Scheduler start new在我的 rake 中 调度程序会保持活动状态 因为它来自 rake 任务吗 要在
  • 如何在不在 RoR 上运行的小型项目中将 HAML 文件自动编译为 HTML 文件?

    我今天才开始玩compass and haml 虽然我对路很熟悉sass有效 我明白了什么compass is for sass以及如何使用它 在使用时我遇到了一些障碍haml有效率的 当然 我希望这里有人已经知道我的问题的答案 并且可以给
  • 表单提交mailto

    我有一个小问题 我正在为 iPhone 开发 html css javascript 应用程序 并且我有一个提交邮件的表单 例如
  • WPF DataGrid 删除所选项目

    最近 我一直在开发一个项目 该项目以编程方式将数据导入到 WPF DataGrid 中 我几乎完成了该项目 但我遗漏的是一个用于删除所选单元格的按钮 这就是我陷入困境的地方 我使用 DataGrid 的基本知识编写了这段代码 var gri
  • 使用 Python 从 URL 中提取 id

    我有一个这样的网址url https www example com contents 6641345 我想提取id在最后的url你可以说interger上面字符串的一部分 我尝试了提供的解决方案https stackoverflow co
  • 如何从通用对话框类中获取数据

    我决定创建一些自定义对话框类 这些类可以由不同情况下的不同活动通用 具体来说 我创建了一个对话框 其中包含一个 EditText 框和一个如下标题 public class EditTextDialogFragment extends Di
  • 通过动态链接和手动设置增强单元测试框架

    我正在尝试设置一个具有动态链接和手动设置的 boost 单元测试框架 不是 BOOST AUTO TEST CASE 我做了一个简单的例子来重现我的错误 SomeLib cpp define BOOST TEST DYN LINK incl