问题标签 [assertions]

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 投票
8 回答
19296 浏览

c# - Debug.Assert 与异常抛出

我已经阅读了大量关于如何以及何时使用断言的文章(以及其他一些发布在 StackOverflow 上的类似问题),并且我很理解它们。但是,我仍然不明白应该驱动我使用什么样的动机Debug.Assert而不是抛出一个普通的异常。我的意思是,在 .NET 中,对失败断言的默认响应是“停止世界”并向用户显示一个消息框。尽管可以修改这种行为,但我发现这样做非常烦人和多余,而我可以改为抛出一个合适的异常。这样,我可以在抛出异常之前轻松地将错误写入应用程序的日志,而且,我的应用程序不一定会冻结。

那么,如果有的话,我为什么要使用Debug.Assert而不是普通的异常呢?将断言放在不应该出现的地方可能只会导致各种“不需要的行为”,所以在我看来,通过使用断言而不是抛出异常,我真的没有任何收获。你同意我的观点,还是我在这里遗漏了什么?

注意:我完全理解“理论上”的区别(调试与发布,使用模式等),但正如我所见,我最好抛出异常而不是执行断言。因为如果在生产版本中发现错误,我仍然希望“断言”失败(毕竟,“开销”非常小),所以我最好还是抛出异常。


编辑:在我看来,如果断言失败,则意味着应用程序进入了某种损坏的、意外的状态。那么我为什么要继续执行呢?应用程序是在调试版本还是发布版本上运行并不重要。两者都一样

0 投票
2 回答
1725 浏览

ruby-on-rails - 在Ruby on Rails中断言关系中的孩子数量的差异

我的控制器能够创建一个子 book_loan。我试图在功能测试中测试这种行为,但很难使用 assert_difference 方法。我尝试了多种将 book_loans 计数传递给 assert_difference 的方法,但都没有成功。

无法将 BookLoan 转换为字符串

NoMethodError:未定义的方法“book_loans”用于#

无法将 Proc 转换为字符串

0 投票
5 回答
4566 浏览

mocking - rspec 模拟:验证“应该”方法中的期望?

我正在尝试使用 rspec 的模拟来设置我可以在它“应该”方法中验证的期望......但我不知道该怎么做......当我在模拟上调用 .should_receive 方法时,它只要 before :all 方法退出,就验证预期的调用。

这是一个小例子:

如何验证“应该”方法中的预期调用?我需要使用 mocha 或其他模拟框架而不是 rspec 吗?或者 ???

0 投票
1 回答
350 浏览

debugging - 在调试中正确使用 assert.h

c++ 与 Visual Studio 2008

如果我使用 assert.h 中的 assert() 并在调试模式下编译,如果断言条件不成立,应用程序就会崩溃,它会在控制台中打印出我在什么文件的哪一行发生了这种情况。这非常有用,但如果条件不成立,我更愿意在这个位置陷入调试器

我怎样才能做到这一点?谢谢!

0 投票
5 回答
1311 浏览

c++ - C++ 应用程序的智能断言?

定义一个新的宏是否可以满足我向用户显示失败断言的需要,并为开发人员提供足够的信息来调试问题。

给用户的消息,用户最后应该如何处理这个消息给开发者的信息

我们使用的示例消息 fn,

0 投票
3 回答
455 浏览

assertions - 我可以在 CxxTest 中编写自定义断言吗?

我刚开始使用 CxxTest 并想测试 std::vector 是否已正确排序。到目前为止,这是我的测试:

显然,CxxTest 没有提供TS_ASSERT_SORTED断言,但是有没有办法编写自定义断言呢?这将允许我这样做:

以这种方式编写测试时,更容易看到测试的意图。

我查看了 CxxTest用户指南,但不知道您是否可以编写这样的自定义断言。作为替代方案,我可以编写一个 IsSorted 类并实现它的operator(). 然后我可以像这样编写测试:

我猜这是正确的方法。但是,如果我这样做,我应该将定义class IsSorted放在它自己的头文件中,与我的测试套件分开吗?我仍在尝试找出与单元测试相关的最佳实践,尤其是在这个框架中。

最后一个问题:我应该在setUp()方法中还是在测试本身中对向量进行排序?

0 投票
4 回答
11862 浏览

java - JUnit:在被测类中启用断言

由于在 JUnit 的 JVM 实例中没有启用断言,我曾多次被assertJUnit 测试套件中没有失败的 Java 语句所困扰。需要明确的是,这些是实现内部的“黑盒”断言(检查不变量等),而不是 JUnit 测试本身定义的断言。当然,我想在测试套件中捕获任何此类断言失败。

显而易见的解决方案是在我运行 JUnit 时要非常小心地使用-enableassertions,但我更喜欢更健壮的解决方案。一种替代方法是将以下测试添加到每个测试类:

有没有更自动的方法来实现这一点?JUnit 的系统范围配置选项?我可以在setUp()方法中进行动态调用吗?

0 投票
2 回答
1406 浏览

.net - Xunit:在一种测试方法中执行所有“断言”?

是否可以告诉 xUnit.netAssert.True()在一种测试方法中执行所有操作?基本上在我们的一些使用/测试用例中,所有断言在逻辑上都属于一个相同的测试“范围”,我有例如这样的东西:

现在,如果例如第一个Assert.True(...)失败,则不会执行/检查其他的。我宁愿不将这七个断言分解为单独的方法,因为它们在逻辑上确实属于一起(如果所有七个断言都一起通过,则 TC 只有完全“通过”)。

0 投票
3 回答
219 浏览

visual-c++ - 为什么我收到断言错误?

为什么输入大于 2 时出现断言错误?这是多项式程序的前身,其中数组的下标是每一项的幂,数组[下标] 处的元素是系数。

0 投票
8 回答
21157 浏览

java - 在 Netbeans 中启用断言

我想做类似的事情

我该怎么做呢?