问题标签 [assert]

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 投票
5 回答
12058 浏览

c++ - 在 Linux 上断言失败后继续调试?

当断言在 Windows 上使用 Visual C++ 失败时,调试器会停止,显示消息,然后让您继续(或者,如果没有正在运行的调试会话,则提供为您启动 Visual Studio)。

在 Linux 上,assert() 的默认行为似乎是显示错误并退出程序。由于我所有的断言都通过宏,我尝试使用信号来解决这个问题,比如

但是,尽管GDB(通过KDevelop)在正确的点停止,但我似乎无法继续越过信号,并且在 GDB 中手动发送信号只会让我悬而未决,既无法控制 GDB,也无法控制被调试的进程。

0 投票
12 回答
19359 浏览

java - 断言两个 java bean 是等价的

这个问题很接近,但仍然不是我想要的。我想以一种通用的方式断言两个 bean 对象是等价的。如果不是,我想要一个详细的错误消息来解释差异,而不是布尔“等于”或“不等于”。

0 投票
2 回答
1576 浏览

c# - Trace.Assert 没有中断,也没有显示消息框

我有一个 WPF 应用程序,我在画布上移动数据。当我像个怪物一样尝试用鼠标移动数据时,问题就开始了。

以下是动作顺序:

  • 画布上的 MouseMove 被触发
  • 在 MouseMove 中,我更改了一些数据
  • Trace.Assert 失败。调试器不会中断,消息框也不会中断
  • 另一个 MouseMove 被触发
  • 数据又变了
  • 由于集合中的重入检查而引发异常。调试器在那里中断。断言消息框从未显示。

这里最大的问题是我可以回到断言,但不是断言失败时的数据,而是最后修改的数据......所以基本上我无法正确调试。

这是堆栈跟踪,从第一个 MouseMove 开始(注意 ShowMessageBoxAssert 以及它仍在继续的事实......):

问题是:为什么会发生这种情况,我应该怎么做才能让它在断言时中断?

我想过使用异常,也许是为了调试,但这确实是我需要的断言。我也在考虑我所有其他的断言,而不需要总是将它们转换为异常进行调试......

0 投票
3 回答
2064 浏览

.net - 为什么 Assert.AreEqual(1.0, double.NaN, 1.0) 通过?

简短的问题,为什么会Assert.AreEqual(1.0, double.NaN, 1.0)通过?而Assert.AreEqual(1.0, double.NaN)失败。

它是 MSTest (Microsoft.VisualStudio.QualityTools.UnitTestFramework) 中的错误还是我在这里遗漏了什么?

最好的问候,埃吉尔。


更新:可能应该补充一点,我的问题背后的原因是,由于某些线性代数矩阵运算的结果是 NaN 或 (+/-)Infinity,我有一堆单元测试不幸通过了。单元测试很好,但是由于当实际或/和预期为 NaN 或 Infinity 时,带有增量的双精度数上的 Assert.AreEqual 将通过,所以我不得不相信我正在测试的代码是正确的。

0 投票
1 回答
246 浏览

flash - Flash 电影导出的所有类的列表

Flash 影片加载另一部包含各种断言的影片 - 其库中设置了“导出为动作脚本”设置的影片剪辑。

有没有办法从加载它们的电影中确定所有这些导出断言的类名列表?

0 投票
4 回答
775 浏览

.net - .NET 生产代码中的“断言”语句

在“稳定”且已移入测试和生产环境的代码中保留Trace.Assert和声明是否明智?Debug.Assert

如果是这样,这些断言语句有什么帮助?让 Guard 类等检查异常条件并酌情引发异常还不够吗?

0 投票
31 回答
281388 浏览

java - 如何对记录器中的消息执行 JUnit 断言

我有一些被测代码调用 Java 记录器来报告其状态。在 JUnit 测试代码中,我想验证是否在此记录器中创建了正确的日志条目。大致如下:

我想这可以用一个特别适应的记录器(或处理程序,或格式化程序)来完成,但我更愿意重新使用已经存在的解决方案。(老实说,我不清楚如何从记录器获取 logRecord,但假设这是可能的。)

0 投票
19 回答
559719 浏览

python - 如何检查对象是列表还是元组(但不是字符串)?

这是我通常所做的,以确定输入是list/ tuple- 但不是str. 因为很多时候我偶然发现了函数错误传递str对象的错误,而目标函数确实for x in lst假设它lst实际上是 a listor tuple

我的问题是:有没有更好的方法来实现这一目标?

0 投票
10 回答
4505 浏览

c++ - 协助避免断言......总是!

在 C 和 C++assert中是一个非常重量级的例程,写入错误stdout并终止程序。在我们的应用程序中,我们实现了一个更健壮的 assert 替代品,并赋予它自己的宏。已尽一切努力assert用我们的宏替换,但仍有许多方法assert可以重新引入(例如,来自内部第三方库、幼稚注入等)

关于我们如何减少、限制甚至消除使用的任何建议assert?最好的答案将是编译器可以为我们捕获的答案,这样我们就不必像目前那样照看代码库了。

0 投票
21 回答
31440 浏览

c++ - Is assert evil?

The Go language creators write:

Go doesn't provide assertions. They are undeniably convenient, but our experience has been that programmers use them as a crutch to avoid thinking about proper error handling and reporting. Proper error handling means that servers continue operation after non-fatal errors instead of crashing. Proper error reporting means that errors are direct and to the point, saving the programmer from interpreting a large crash trace. Precise errors are particularly important when the programmer seeing the errors is not familiar with the code.

What is your opinion about this?