问题标签 [unittest++]

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

c++ - 如何以编程方式禁用 C++ 中的断言?

我必须在 C++ 中调试单元测试(我们使用 UnitTestPP)(特别是使用 VS 2015),并且我想禁用代码的特定部分的断言,我们愿意让测试代码抛出异常,这反过来又会导致一些断言失败,因此每次出现“断言失败”弹出窗口时,我并不总是单击“忽略”。

我不想完全禁用断言,因为它们仍然可以用于在代码中发出有问题的情况。

我知道#define NDEBUG,但它不起作用。我认为这是因为单元测试在另一个项目/DLL 中。

此外,失败的断言是 ATLASSERT,我不知道这是否会改变某些东西。

0 投票
1 回答
576 浏览

c++ - linux上codelite、unittest++和g++的链接器错误

我是 C++ 单元测试的新手,并在 Linux (Mint) 上编写 C++。我使用 CodeLite 作为我的 IDE。我在 stackoverflow 上找到了几个关于链接器错误的答案,但是经过数小时尝试各种解决方案后,我还没有成功地正确实施解决方案。

我通过 apt-get 安装了 unittest++。unittest++ 头文件安装在 /usr/include 中,因此我将其添加到 Codelite 中的 Compiler 链接器选项中(右键单击项目名称->设置,编译器): Codelite screenshot

然后我有一个非常简单的程序,它完全由一个 main.cpp 文件组成:

此时运行项目会生成其他用户遇到的一系列链接器错误,例如:

main.cpp:4:未定义的引用UnitTest::CurrentTest::Details()

至此,我的理解是,我现在需要将目标文件告诉 g++ 编译器,并将它们链接到 unittest++ 文件。这就是我卡住的地方。我看到的唯一 .o 文件位于Debug/main.cpp.o并运行命令
g++ main.cpp -o main.cpp.o -Lunittest++ 以及带有 I 和 o 标志的变体,但它们都返回我尝试编译时遇到的相同链接器错误。我还尝试复制论坛中的每个 g++ 行,但只会出现各种错误。

我试图在 g++ 手册页中找到解决方案,阅读了我一直在使用的标志,但没有推断出解决方案。然后,我很快就被 man 条目中的大量页面所淹没。CodeLite 和 unittest++ 的文档似乎已经过时了,所以我在 stackoverflow 上发布了作为最后的手段。

我相当肯定我只是犯了一个菜鸟错误。如果有人有反馈,我将不胜感激。

0 投票
1 回答
942 浏览

c++ - codelite unittest++/UnitTest++.h:没有这样的文件或目录

我正在尝试使用 C++/Codelite 进行单元测试。我从 codelite-plugins 包(Ubuntu 18.04)安装了 UnitTest++ 插件。我也可以看到这个:

所以我在 Codelite 中创建了一个测试项目并添加了这个:

现在我希望在按 CTRL+F5 后得到测试结果。但是当我这样做时,我只会得到一个弹出窗口,说没有测试:

在此处输入图像描述

我还注意到,当我转到Build > Build Project时,我收到一条错误消息:

致命错误:unittest++/UnitTest++.h:没有这样的文件或目录

我还找到了THIS ANSWER并根据那里的答案/评论尝试了不同的控制台命令变体,但我总是得到相同的没有这样的文件或目录错误。

知道我缺少什么吗?

编辑:

根据 Stephen 的 Newell 请求构建日志:

此外,如果我右键单击该项目,转到Settings > Compiler,我可以看到:

包含路径 = /usr/include/unittest++

0 投票
1 回答
199 浏览

c++ - 如何为 UnitTest++ 项目编写 CMakeLists.txt 文件

有人问我是否可以在我正在处理的项目中开始使用 cmake 而不是 Makefiles。我已经开始编译我的主项目,但是,我很难为使用 UnitTest++CMakeLists.txt的目录编写文件。test/我找到了这些说明,但我很难遵循它们。我跑

mkdir build cd build/ cmake .. make

但我得到一些链接器错误。can not be used when making a PIE object; recompile with -fPIC它多次提到这个短语。这是我的CMakeLists.txt文件:

根据[此处]给出的建议,我添加了set(CMAKE_POSITION_INDEPENDENT_CODE OFF),但无济于事。

这是运行的全部输出make

即使错误消息并没有真正暗示这一点,可能是因为它没有重新编译.cpp目录之前test/目录中的所有 s 吗?我没有看到 g++ 编译这些的任何输出。

0 投票
0 回答
449 浏览

c++ - 我的 cmake 项目中的“未定义引用”错误

我在将我的 c++ 项目组织为 cmake 项目时遇到了一些麻烦,这是我的新手。我正在尝试模仿这个 github 存储库给出的模板。我想我快到了,但是当我尝试使用以下命令进行编译时,我遇到了一些链接器错误:

有很多输出,但这里是前几行:

我想这一定意味着我的markets/test/CMakeLists.txt文件有问题,我现在有:

有任何想法吗?其他问题似乎表明我可能以错误的顺序链接事物,但这个项目结构并不复杂(只是一个可执行文件、一个库和一些单元测试)。这是用我的旧 makefile 编译的,所以我怀疑这是因为我没有定义一些头文件定义。

如果有帮助,这是tree我的根目录:markets/

编辑:

这是src/markets/CMakeLists.txt

0 投票
1 回答
48 浏览

c++ - 在 C++ 和 UnitTest++ 中使用宏

我正在开发一个大型 C++ 项目,对于安全关键的航空航天软件,我们有大约 50 名开发人员在从事该项目,所以它当然是巨大的,我们在 Red Hat Linux 上使用 C++ 以及一点点 Java 和 Python,并且系统的一小部分也托管在 IBM AIX Unix 和 Windows 上。

我最近被聘用到这个项目中,发现 UnitTest++ 被用于进行单元测试。让我感到困惑的一件事是 UnitTest++ 如何使用宏。它使用宏定义派生类,然后调用宏调用基类方法。这是非常不寻常的,我试图在一个小的示例 C++ 程序中重现同样的事情,但无法让它工作。注意示例程序的源代码。由于保密协议,我无法在我们的项目中发布特定代码。

应该有办法让它工作,它在我们的单元测试中使用 UnitTest++

0 投票
2 回答
413 浏览

c++ - 如何在 Ubuntu 中使用通过 apt 安装的 UnitTest++

在那之后

但是没有libUnitTest++.a像我在 Windows 中根据此处的说明自己编译 UnitTest++ 的情况。我也没有看到源代码文件。

我可以使用此安装进行测试还是需要下载源代码并自己编译?或者我该如何使用libUnitTest++.so而不是libUnitTest++.a

这是我的一项测试:

现在它说: