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

c - CppUTest 未在目标上运行 - 如何“伪造”注册

我正在对嵌入式 C 代码进行单元测试,而无需在目标硬件上运行。这是代码的一部分:

函数write_to_i2c()将值写入特定寄存器。函数read_from_i2c()从寄存器读回值。此外,我使用变量tempReadback来比较读回的值是否与写入的值相同。到目前为止还可以,这适用于目标硬件。现在我正在做 Uni Tests 而不在目标硬件(循环中的软件)上运行代码。这意味着,表达式tempReadback == msg->value永远不会为真(tempReadback 为 0),我每次都会在语句somethingB中运行。有没有办法伪造寄存器回读?我使用 CppUTest 作为框架。

将不胜感激!

0 投票
1 回答
757 浏览

c++ - 有什么方法可以在 CppUTest 中模拟全局变量吗?

有没有办法模拟静态全局变量以在测试函数中使用?或者有什么解决方法?

下面是这种情况的例子:

0 投票
1 回答
615 浏览

c++11 - 使用 C++11 版本构建的 CppuTest

Ubuntu下安装g++ 4.9.0(实验)版本(我正在使用该版本提供的某些功能)

在构建我的代码时,我cmake从脚本中使用它,并且它可以正确构建。下面的gcc包含安装 g++ 的路径(/mnt...)

现在,当我让 CppuTest 为我的代码构建单元测试时,我收到以下错误。

在 CppuTest makefile 中包含了CPPUTEST_CPPFLAGS += -std=c++1y. 我想这在这个 makefile 中缺少一些标志,因为正如我所说,C++ 实验库正在我的“常规”代码中正确构建。我错过了什么?

0 投票
1 回答
3147 浏览

c++ - 如何使用 CppUTest 模拟方法返回对象

我有以下方法:

我尝试编写可以返回测试中准备的 QMap 的模拟:

但我不知道如何模拟返回值?我想在TEST函数中以下列方式使用模拟:

我在 CppUTest Mocking 文档中找不到这样的示例。我也知道.andReturnValue这种形式也行不通。

0 投票
2 回答
270 浏览

c++ - 使用 Qt 和 Boost 为应用程序编译 CppUTest 测试时的奇怪行为

我有以下问题。当我尝试编译 .so 库时,一切正常。

当我尝试创建例如使用的可执行文件时logger.cpp。测试文件我得到错误的墙壁。完整的日志在这里。然而,它在开发人员计算机上编译的最有趣的事情。我们检查编译器版本,cmake 版本,一切都一样。cpputest 版本不一样。

也许你们中的任何人都面临过这样的问题并且知道我们做错了什么。

0 投票
1 回答
1081 浏览

c - C 的 TDD。如何使用 CppUTest 编译和运行我的第一个测试?

我开始使用嵌入式 C 的测试驱动开发,并开始阅读这本书:'嵌入式 C 的测试驱动开发',他们在其中推荐了两个开发系统测试环境:Unity 和 CppUTest。

因此,我决定下载两者的代码,并下载并安装 Cygwin,以编译这些东西。但是,一旦我下载了所有内容,我就真的迷路了,因为没有这种好的文档:

“ 1- 首先转到 XXX。2- 运行 XXX。3- 将 XXX 文件复制到 XXX 文件夹中。 4- 瞧,一切就绪”

当我下载 CppUTest 和 Unity 时,我发现的唯一东西是大量包含 makefile 和东西的文件夹以及一些对我来说就像用中文写的 README。我得到的最远的是编译 CppUTest 并运行它的测试,就是这样。

所以,这是我的问题。想象一下,我已经有了 Module.c、Module.h 和 ModuleTest.cpp。我需要做什么来编译它并运行测试?

我想知道您是否有使用此工具的经验,可以给我一些提示和建议。

感谢你并致以真诚的问候。

0 投票
1 回答
1475 浏览

c++ - CppUTest 单元测试框架多定义异常

我将尝试将此作为一个纯粹的最小示例,以尽可能适用于尽可能多的人,并保护任何可能违反 NDA 的代码共享。希望这没问题!

我正在使用 CppUTest 和 CppUMock(使用 gcc/g++ 编译和使用 CMake 创建的 makefile)与 Gitlab 持续集成软件一起为未来的提交和软件发布创建单元测试环境。但是,我遇到了一些问题。假设我有以下文件夹设置(除了 /tests 文件夹的内容之外,我几乎没有更改的能力):

CMakeLists 文件将包含 inc 文件夹、src 文件夹的编译和测试文件夹的编译。但是,假设 driver2.c 依赖于 driver1.c 定义的方法。如果没有模拟设置,这很好,因为您可以正常测试调用驱动程序2 的方法的结果。但是,假设我想模拟 driver1 的 method1 函数,以便我可以检查 driver2 是否正确调用了 method1(使用 CppUMock)。这通常会很好,如果 driver1 没有被编译,但是在 test_driver2.cpp 文件中添加类似的东西:

将导致与 driver1.c 中的实际方法 1 发生冲突,并出现如下链接器错误:

根据评论者的要求,这是包含结构的样子:

method1 在 driver1.h 中声明并在 driver1.c 中定义。我无法编辑这些文件。

我很高兴根据要求添加详细信息。

解决这个嘲笑问题的最佳方法是什么?

0 投票
1 回答
942 浏览

tdd - cputest - 输出有关测试用例的更多信息

当我构建并运行cpputest时,我得到如下输出:

这是通过指定命令行参数 -v (verbose) 有没有办法在输出中放置更多信息。我希望每个单元测试用例都有一个特定的 ID,例如:

我找到了 UT_PRINT() 宏,但它输出带有行号的单元测试文件的完整路径。这个 ID 号我稍后会输出到.xml文件中使用

命令。

任何想法?

0 投票
0 回答
88 浏览

c - 嵌入式软件测试,如何测试位状态和在该状态下花费的时间?

我编写了一个通过操作 GPIO 引脚发送莫尔斯电码的函数。该引脚设置为高电平一段时间以发出 DOT 信号。然后设置为低一段时间以指示 DOT-DASH 空间等。

所以问题是我发送了一个序列,例如“CBA”,然后程序执行它,从 cpputest 代码我只能测试引脚的最终状态。我想写一个测试来检查每个状态所花费的时间和位的状态。这怎么可能?

0 投票
2 回答
1577 浏览

cpputest - CppUtest 中有没有一种方法可以在运行时在同一个测试文件中调用模拟和真实函数?

例如:

生产.cpp

测试生产.cpp

据我了解,当 func1() 被嘲笑时,无法测试实际功能。

下面的示例代码只是我想要做的一个想法。

因为我必须测试许多调用内部许多函数的函数。有时,我不在乎那些其他函数的实际结果,所以我嘲笑它,但是当我想在我正在测试的函数内部调用时测试真实函数的行为时,我不能这样做,因为那个函数已经被嘲笑了。

另外我希望我可以在不修改生产代码的情况下做到这一点,只修改测试代码。