问题标签 [cpputest]

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 回答
286 浏览

cortex-m3 - 当两个固件使用相同的链接描述文件链接时,为什么复位向量的地址会不同?

我有一个 Cortex-M3 芯片,我正在运行一个使用 eCos 的引导加载程序。引导加载程序在检查固件更新等后,跳转到实际应用程序所在的 ROM 上的另一个位置(BASE_ADDRESS_OF_APP + 0x19)(也使用 eCos 编译)。

现在,我不想运行普通固件,而是想运行为 Cortex-M3 目标编译的 CppUTests。因此,我能够使用 ecos glibc 编译和链接目标平台的测试,而不是实际的操作系统。但是当我使用 JTAG 将它加载到我的板上时,它不会运行。

在使用 arm-eabi-objdump 进行一些调查后,我发现 CppUTest 固件的重置向量位于 0x490 的偏移量处,而普通固件的偏移量为 0x18。我怀疑这就是为什么永远不会执行测试的原因。这个对吗?

当我将它们与相同的链接描述文件链接时,这两个固件怎么可能有不同的起始地址?

如何确保测试程序的起点与应用程序的起点相同?

0 投票
2 回答
4709 浏览

c - CppUTest:如何将更多数据传递给特定的模拟调用?

我开始将 CppUTest 用于一些 C/C++ 项目。特别是模拟扩展听起来不错,但我目前正在努力如何以正确的方式设置模拟。假设一个用于抽象网络套接字通信的低级类。

我的第一种方法:

设置期望:

到现在为止还挺好。但我需要的是提供更多数据——在这种情况下,我想通过 buf 指针返回 15 个字节。我尝试使用.setData()andsetDataObject()方法。但看起来函数将数据存储在命名变量中,而不是使用预期的函数调用。因此后续调用将覆盖前面的数据,对吗?

我目前的问题是如何将额外的返回数据传递给模拟方法?我的第一个方法是创建一个包含返回值(size_t)和数据缓冲区的结果类。像这样:

和期望:

问题:这是正确的方法还是我错过了什么?我需要缓冲区内容,因为我需要测试结果解释器。

我的第二种方法:

设置期望:

在这种情况下,我想验证由被测代码生成的 buf 中的传出数据。因此,我需要将该缓冲区内容(和长度)返回给测试函数。像这样:

和期望:

这看起来很丑陋,对我来说有很多开销。再次我的问题:这是正确的方法还是我错过了什么?

我的最后一个问题是:是不是我测试的方式完全错误?请告诉我您的经验和做法!

0 投票
1 回答
353 浏览

numbers - 在哪个文件中定义了 CppUTest 的版本号

在哪个源/包含文件中定义了 CppUTest ( http://cpputest.github.io ) 的版本号?

我搜索了所有文件,包括 .cpp 和 .h 文件,但找不到任何东西。

根据 CppUtest 主页,最新版本是 3.4,我想看看我们的系统是否正在使用它。

问候斯特凡

0 投票
0 回答
811 浏览

c++11 - 在 g++ 4.7.2 上使用 -std=c++11 的 CppUTest 错误

我一直在使用带有 g++ 4.7.2 的 CppUTest 一段时间,没有出现任何问题。但是,我刚刚打开了该-std=c++11选项,因此我可以开始使用std::unique_ptr它并立即失败。

即使只是编译主模块:

因以下变化而失败:

删除该-std=c++11选项会使一切再次正常工作。

CppUTest 文档对与重载的新运算符冲突的宏进行了一些评论,并建议首先#include 标准头文件,但我在根本不包含任何头文件的情况下遇到了这个问题,尽管它看起来像是CppUTest/CommandLineTestRunner.h包含了<string>它自己。

有人遇到过这个问题或知道问题是什么吗?

0 投票
1 回答
274 浏览

c++ - 从指定输入和预期结果的场景表生成单元测试

我目前正在尝试为模块生成一些后编码 UT。该模块将输入数据分类到数据库,如果找到匹配项,则返回正确的值。

在构建了一个包含所有可能的输入场景及其预期结果的表格后,我发现我需要创建 50 多个测试。由于所有测试基本相同,除了测试名称和输入,某种模板似乎适合这里,减少代码混乱。

我最初的设想,要么是创建这样一个模板并使用输入数据和预期结果扩展到测试的宏,要么是在宏的帮助下使用表示场景表的结构来包装它。(我想 C++ 模板在这里也足够了)。

但是,我不确定这是一条正确的道路,并且想知道是否有人可以就如何解决它提出一些建议。还有一个问题是它如何适合 TDD 方法。

这是使用 CppUTest 的想法:

使用示例:

0 投票
1 回答
1540 浏览

macos - CppUTest 示例不起作用

我刚刚按照指南所示使用 brew 在我的 MAC 上安装了 CppUTest。当我尝试构建示例 cpp 时它失败了。

我猜这是因为没有包含定义这些宏的头文件。所以我添加包括如下:

现在我得到一堆错误。

0 投票
1 回答
1030 浏览

c++ - cpputest 错误消息分配/解除分配

使用 cppunit 测试我的应用程序时收到此错误消息

我已经解决了这个特殊问题,我的问题是如何启用更好的信息而不是未知文件和第 0 行?

0 投票
2 回答
2228 浏览

embedded - 如何将静态库 CppUTests 添加到我的项目 atmel studio

我正在使用 Atmel Studio 6.1.2 SP2。我正在为我们的嵌入式系统项目设置 CppUTest。我为 CppUTest 框架创建了一个静态 CPP 库,在稍作改动后成功编译。现在我将这个库包含到一个测试项目中。一个 C++ 应用程序项目。

在此处输入图像描述

我现在面临的问题是,即使智能感知自动完成我的包含,这意味着它可以看到库在哪里,我在编译时收到“没有 chuch 文件或目录”错误。

在 GccApplication1.cpp 我有这个:

错误是它找不到CommandLineTestRunner.h。我尝试使用 "" 和 <> 但它没有看到它。

有任何想法吗?了解更多信息。我正在按照 Atmel 的步骤操作,这是教程

0 投票
3 回答
2924 浏览

cpputest - CppUTest 中未定义的引用

我有一个makefile,如答案中所述:

CPPUTestMakeFile 帮助链接

我在我的 cpp 文件中有:

然后我得到错误:

有什么想法可以尝试吗?

0 投票
1 回答
468 浏览

c++ - 为什么在.lib中定义符号时VS2010(lnk2001)中的“未解析的外部符号”?C++,升压,cpputest

我从链接器收到此错误:

我一定遗漏了一些非常明显的东西,因为我反复查看了“遗漏”符号的定义,看不出任何问题。

符号的定义在 .lib 文件中。我在该 .lib 文件的 dumpbin /symbols 的输出中看到以下内容:

并且从该 .lib 文件中成功解析了其他符号!(实际上,来自同一个 .obj。) [更新:我不再认为前面的说法是正确的。这可能是我第一次尝试访问任何未在 .h 文件中定义的函数。]

以下内容与问题无关——所以请不要花时间研究它!

这是函数的声明(在 PACBalances.h 中):

请注意,我尝试将上面的“struct”更改为“class”,但没有任何效果。

这是调用代码(在 cputest 测试文件中):

这是操作符函数本身的定义:

请注意:

  1. 比较器和 typedef 的 multimap 在很多代码中都可以很好地工作(上面没有显示)。
  2. 测试文件调用了该 .h 文件中声明和定义的许多其他函数,但这是我第一次尝试调用在单独的 .cpp 文件中定义的函数
  3. 我的问题不是为什么“onesy.insert”调用需要比较器功能。我明白那个。它恰好是我在实际使用比较器的测试集中编写的第一个多映射操作。

我有各种预感,但我已经没有预感了,所以如果有人知道这些东西可以给我任何线索,我将非常感激。

规范