问题标签 [catch2]
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++ - 不能在 Catch 测试中使用重载比较运算符
我有一个使用 Catch 2.11.1 的简单单元测试:
上述简单程序会产生以下错误:
[在此之后还有更多消息......]
错误消息的关键部分是这一行:
从错误消息中可以清楚地看出,它是被调用的标准std::operator==
函数,而不是我的重载函数。std::pair
operator==
如果我不在CatchREQUIRE
宏中进行比较,那么它可以工作:
现在这是 Catch 的问题,还是我的操作员函数的问题?
注意:我正在使用最近构建的 GCC 9.2 构建 Debian SID
c++ - 不要在 Catch2 测试用例中组合生成器
Catch2
我想在一个测试用例中使用多个生成器。我的问题是,当有两个以上的生成器时,它们是“组合的”。所以如果我写这样的东西:
这将产生四个测试用例:( startPos[0] vs expectedMoves[0]
, startPos[0] vs expectedMoves[1]
, startPos[1] vs expectedMoves[0]
, startPos[1] vs startPos[1]
)。
然而,我只想要两个:(startPos[0] vs expectedMoves[0]
,startPos[1] vs startPos[1]
)。
有没有办法以优雅和可读的方式做到这一点?我想避免这样的事情:
由于维护这种怪物很麻烦。
编辑:我不太喜欢这个解决方案: https ://github.com/catchorg/Catch2/blob/ce42deb72fab2be85a862f559984580c24cb76c4/projects/SelfTest/UsageTests/Generators.tests.cpp#L199
c++ - 如何使用重载的相等(==)运算符向测试用例添加描述?
使用 catch2 单元测试框架,我想覆盖 catch2 describe 方法,以便它打印出我的类型而不是 {?} == {?}
我也试过通过 matcher 方法来做
但是,它只会显示指定为测试的对象,而不会显示正在测试的对象。输出将是 {?} 与 Point(2, 1) 不同
在https://github.com/catchorg/Catch2/blob/master/docs/tostring.md#top 建议的方法是覆盖 std::ostream 的运算符<<,但是,我不知道重载运算符后我应该做什么。
预先感谢您的回答
编辑: 点对象的 operator<< 的重载如下
换句话说,在这种情况下,我的目标输出特别是 Point(x, y) 与 Point(x,y) 不同
c++ - Catch2 C++ 链接器问题——包括类的未定义符号
从事 C++ 学校项目。似乎无法让 catch2 测试正常工作。
我有一个makefile,我在其中编译我的项目
当此行运行时,clang++ --std=c++11 -o A2test Test_PriorityQueue.cpp
我收到此错误:
这是测试文件的代码—— Test_PriorityQueue.cpp :
当我注释掉最后一个“创建 PQ”时,前几个测试运行得很好。一旦我包含这些,我就会开始收到这些未定义的符号错误。一段时间以来一直在抨击我的头。一些帮助将不胜感激!
编辑:
模拟.h
Simulation.cpp 构造函数:
c++ - 如何修复 tromeloeil 中的“RETURN missing for non-void function”错误?
我试图弄清楚如何将 Trompeloeil 库与 C++11 一起使用。在这个例子中,我遇到了大量的构建错误,我不明白为什么。
有大量的构建错误,但对我来说突出的错误如下:
也
如果有人可以帮助我理解这些,将不胜感激。我可以根据要求提供完整的构建错误
c++ - Catch2 替代部分行为
我正在使用 Catch2,并且我正在尝试构建一个测试用例,该测试用例在部分之前进行复杂的设置,在列表中由 MyObject 实例的初始化表示。
我喜欢部分的想法,因为它们将测试分开,但我想避免在每个部分之前初始化 MyObject,这可能吗?
c++ - 为什么这会导致Seg。故障,如何使用 GDB 调试它?
代码本身非常简单。我正在使用Catch2进行单元测试,(我真的很喜欢它的界面)并闯入gdb
,但没有获得 Seg 的有用信息。所述简单代码引发的错误。
我确切地知道是什么导致了这个问题,但我不知道为什么,或者我会如何得到有问题的代码行gdb
(我已经广泛使用 Python 等价物,pdb
但 Python 中的错误似乎是更直接)。
翻牌.hpp
翻牌.cpp
test_Flop.cpp
main.cpp包含它应该包含的所有内容,以及下载的catch.hpp(按照教程的说明)。
我用: 编译g++ Flop.cpp test_Flop.cpp main.cpp -o run_test
它并用 运行它gdb -ex run --args ./run_test -b
,这允许 Catch2 进入调试器。结果是这样的:
使用回溯:
行。因此,SIGSEGV
表明我们尝试读取/写入进程无权访问的内存。如果在Flop.hpp中,我改为说int tiles_[10][10][10]
,那么一切正常。那么设置tiles_
为更大的大小是在某种程度上保留了一块无法访问的内存吗?我是 C++ 的新手(因此当我编写某些东西时,我实际上是在思考计算机中发生了什么)所以如果我错了请纠正我,但int tiles_[200][200][200]
不应该占用超过 32MB 的内存,对吧?
因此,我有几个问题:
- 为什么这会导致分段错误?
- 我怎样才能
gdb
让我进入有问题的代码行?这段代码的未简化版本总共有几百行。幸运的是,我的问题出现在班级定义的早期,但是将所有内容注释掉并(煞费苦心地)逐行取消注释仍然需要一段时间,这就是gdb
要防止的!
c++ - Catch2:测试崩溃,因为封装在 REQUIRE_THROWS 中的调用抛出异常
我使用 catch2 作为单元测试框架。一个测试用例应该检查函数调用是否导致抛出异常,所以我基本上写
会发生什么:函数抛出并且测试崩溃。查看调用堆栈,我发现崩溃是由于在调用我的 throwing 成员函数时引发的异常而发生的。这里可能出了什么问题,所以抛出的异常不会被 REQUIRE_THROWS 捕获,而是使整个测试崩溃?
编辑:由于这是一个复杂且封闭源代码的项目,因此我无法为该问题提供一个最小且可重现的示例。但是,也许有人遇到了类似的错误,并且可以假设可能导致这种行为的原因。
c++ - 为什么我在 catch2 测试中收到此 SIGSEGV 信号?
我目前正在学习 c++,作为练习,我一直在尝试实现链表数据结构。我在 Catch2 中为它编写测试,我不断收到一个 SIGSEGV 信号,我不知道为什么。
这是我的链表头文件:
这是我的链表实现文件:
这是我的 catch2 测试:
我得到 SIGSEGV 信号的测试是SECTION("can append values")
,但是如果我删除这个测试,那么我会在下一个得到信号。
我知道这些信号通常来自访问您不应该访问的内存,但是我不确定这可能发生在哪里。
(请注意,复制构造函数和赋值运算符重载尚未实现。我认为这不会导致这种情况,但如果我错了请纠正我)
任何帮助将不胜感激!