使用 CppUnit 和 TFS2015 时"断言失败"消息不完整
'Assert Failed' message incomplete using CppUnit and TFS2015
正在使用: MSTest/CppUnit/TFS2015/VS2013/C++
我正在调试一个在本地运行良好并在构建机器(我无权访问)上失败的测试。今天早上我坐下来,几乎所有的测试都通过了——除了一个。测试恰好比较了两个相当大的字符串,并且(通常)非常有用Assert failed. Expected:<...
由于字符串太长而从未进入Actual:<...
部分。这只是一个简单的:Assert::AreEqual(expectedStr, actualStr);
.
现在我的解决方法是将文件写入我可以从测试中访问的网络路径(幸运的是,这已经是一个集成类型测试 - 但仍然......哦 - 我有没有提到我必须运行一个需要 40 分钟的构建,即使我在构建过程参数中将Clean Workspace
设置为None
才能运行测试?这是另一篇文章的另一个问题=/。
有没有办法查看测试断言失败的完整结果(例如,没有中断字符串比较)?也许是测试运行日志文件?
根据您的描述,您希望在C++中表达断言失败消息。检查此案例可能会帮助您:
"此问题的常见解决方案是创建断言宏。有关示例,请参阅此问题。该答案中他们的宏的最终形式如下:
#define dbgassert(EX,...)
(void)((EX) || (realdbgassert (#EX, __FILE__, __LINE__, ## __VA_ARGS__),0))
在您的情况下,realdbgassert
将是一个函数,它将任何相关信息打印到stderr
或其他输出控制台,然后调用断言函数本身。根据所需的信息量,您还可以执行堆栈转储,或记录任何其他有助于识别问题的相关信息。但是,它可以像传递 printf 式格式字符串和相关参数值一样简单。
请注意,如果编译器不支持可变参数宏,则可以改为创建采用特定数量参数的宏。这稍微麻烦一些,但如果编译器缺乏支持,则可以选择,例如:
#define dbgassert0(EX) ...
#define dbgassert1(EX,p0) ...
#define dbgassert2(EX,p0,p1) ...
"
- 自定义预期失败的完整错误消息(boost::spirit::x3)
- boost::p rogram_options - 验证失败时,显示用户在错误消息中输入的值
- 为什么我的GLSL着色器失败汇编而没有错误消息
- 使用分位数函数提升断言失败的消息
- 由于管道破裂,提升 asio 发送消息失败
- git_clone错误消息断言失败:git_atomic_get(&git__n_inits) > 0
- 使用预编译标头时,海湾合作委员会在没有消息中失败
- 读取功能失败时的成功消息
- 构建失败 - 错误消息翻译
- 使用 CppUnit 和 TFS2015 时"断言失败"消息不完整
- IWICImagingFactory::CreateDecoderFromStream()失败,错误消息消息没有帮助
- MFC-接收按钮单击消息失败
- 如何在C++中读取系统调用失败时显示的故障日志消息
- MFC窗口工具栏创建失败,没有错误消息
- 顶点着色器编译失败,但信息日志中没有消息
- make find_package(OpenGL REQUIRED)失败,没有任何错误消息
- 调试断言失败消息
- 使模板函数编译失败,并返回错误消息
- Google Mock:如何配置自定义消息来解释匹配失败
- 使用模板检查结构体中的字段,启用函数if,并在失败时给出一个漂亮的错误消息