问题标签 [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.
c++ - 如何以编程方式禁用 C++ 中的断言?
我必须在 C++ 中调试单元测试(我们使用 UnitTestPP)(特别是使用 VS 2015),并且我想禁用代码的特定部分的断言,我们愿意让测试代码抛出异常,这反过来又会导致一些断言失败,因此每次出现“断言失败”弹出窗口时,我并不总是单击“忽略”。
我不想完全禁用断言,因为它们仍然可以用于在代码中发出有问题的情况。
我知道#define NDEBUG,但它不起作用。我认为这是因为单元测试在另一个项目/DLL 中。
此外,失败的断言是 ATLASSERT,我不知道这是否会改变某些东西。
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 上发布了作为最后的手段。
我相当肯定我只是犯了一个菜鸟错误。如果有人有反馈,我将不胜感激。
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++
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++ 编译这些的任何输出。
c++ - 我的 cmake 项目中的“未定义引用”错误
我在将我的 c++ 项目组织为 cmake 项目时遇到了一些麻烦,这是我的新手。我正在尝试模仿这个 github 存储库给出的模板。我想我快到了,但是当我尝试使用以下命令进行编译时,我遇到了一些链接器错误:
有很多输出,但这里是前几行:
我想这一定意味着我的markets/test/CMakeLists.txt
文件有问题,我现在有:
有任何想法吗?其他问题似乎表明我可能以错误的顺序链接事物,但这个项目结构并不复杂(只是一个可执行文件、一个库和一些单元测试)。这是用我的旧 makefile 编译的,所以我怀疑这是因为我没有定义一些头文件定义。
如果有帮助,这是tree
我的根目录:markets/
编辑:
这是src/markets/CMakeLists.txt
c++ - 在 C++ 和 UnitTest++ 中使用宏
我正在开发一个大型 C++ 项目,对于安全关键的航空航天软件,我们有大约 50 名开发人员在从事该项目,所以它当然是巨大的,我们在 Red Hat Linux 上使用 C++ 以及一点点 Java 和 Python,并且系统的一小部分也托管在 IBM AIX Unix 和 Windows 上。
我最近被聘用到这个项目中,发现 UnitTest++ 被用于进行单元测试。让我感到困惑的一件事是 UnitTest++ 如何使用宏。它使用宏定义派生类,然后调用宏调用基类方法。这是非常不寻常的,我试图在一个小的示例 C++ 程序中重现同样的事情,但无法让它工作。注意示例程序的源代码。由于保密协议,我无法在我们的项目中发布特定代码。
应该有办法让它工作,它在我们的单元测试中使用 UnitTest++
c++ - 如何在 Ubuntu 中使用通过 apt 安装的 UnitTest++
在那之后
但是没有libUnitTest++.a
像我在 Windows 中根据此处的说明自己编译 UnitTest++ 的情况。我也没有看到源代码文件。
我可以使用此安装进行测试还是需要下载源代码并自己编译?或者我该如何使用libUnitTest++.so
而不是libUnitTest++.a
?
这是我的一项测试:
现在它说: