问题标签 [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.
c# - Debug.Assert 与异常抛出
我已经阅读了大量关于如何以及何时使用断言的文章(以及其他一些发布在 StackOverflow 上的类似问题),并且我很理解它们。但是,我仍然不明白应该驱动我使用什么样的动机Debug.Assert
而不是抛出一个普通的异常。我的意思是,在 .NET 中,对失败断言的默认响应是“停止世界”并向用户显示一个消息框。尽管可以修改这种行为,但我发现这样做非常烦人和多余,而我可以改为抛出一个合适的异常。这样,我可以在抛出异常之前轻松地将错误写入应用程序的日志,而且,我的应用程序不一定会冻结。
那么,如果有的话,我为什么要使用Debug.Assert
而不是普通的异常呢?将断言放在不应该出现的地方可能只会导致各种“不需要的行为”,所以在我看来,通过使用断言而不是抛出异常,我真的没有任何收获。你同意我的观点,还是我在这里遗漏了什么?
注意:我完全理解“理论上”的区别(调试与发布,使用模式等),但正如我所见,我最好抛出异常而不是执行断言。因为如果在生产版本中发现错误,我仍然希望“断言”失败(毕竟,“开销”非常小),所以我最好还是抛出异常。
编辑:在我看来,如果断言失败,则意味着应用程序进入了某种损坏的、意外的状态。那么我为什么要继续执行呢?应用程序是在调试版本还是发布版本上运行并不重要。两者都一样
ruby-on-rails - 在Ruby on Rails中断言关系中的孩子数量的差异
我的控制器能够创建一个子 book_loan。我试图在功能测试中测试这种行为,但很难使用 assert_difference 方法。我尝试了多种将 book_loans 计数传递给 assert_difference 的方法,但都没有成功。
无法将 BookLoan 转换为字符串
NoMethodError:未定义的方法“book_loans”用于#
无法将 Proc 转换为字符串
mocking - rspec 模拟:验证“应该”方法中的期望?
我正在尝试使用 rspec 的模拟来设置我可以在它“应该”方法中验证的期望......但我不知道该怎么做......当我在模拟上调用 .should_receive 方法时,它只要 before :all 方法退出,就验证预期的调用。
这是一个小例子:
如何验证“应该”方法中的预期调用?我需要使用 mocha 或其他模拟框架而不是 rspec 吗?或者 ???
debugging - 在调试中正确使用 assert.h
c++ 与 Visual Studio 2008
如果我使用 assert.h 中的 assert() 并在调试模式下编译,如果断言条件不成立,应用程序就会崩溃,它会在控制台中打印出我在什么文件的哪一行发生了这种情况。这非常有用,但如果条件不成立,我更愿意在这个位置陷入调试器
我怎样才能做到这一点?谢谢!
c++ - C++ 应用程序的智能断言?
定义一个新的宏是否可以满足我向用户显示失败断言的需要,并为开发人员提供足够的信息来调试问题。
给用户的消息,用户最后应该如何处理这个消息给开发者的信息
我们使用的示例消息 fn,
assertions - 我可以在 CxxTest 中编写自定义断言吗?
我刚开始使用 CxxTest 并想测试 std::vector 是否已正确排序。到目前为止,这是我的测试:
显然,CxxTest 没有提供TS_ASSERT_SORTED
断言,但是有没有办法编写自定义断言呢?这将允许我这样做:
以这种方式编写测试时,更容易看到测试的意图。
我查看了 CxxTest用户指南,但不知道您是否可以编写这样的自定义断言。作为替代方案,我可以编写一个 IsSorted 类并实现它的operator()
. 然后我可以像这样编写测试:
我猜这是正确的方法。但是,如果我这样做,我应该将定义class IsSorted
放在它自己的头文件中,与我的测试套件分开吗?我仍在尝试找出与单元测试相关的最佳实践,尤其是在这个框架中。
最后一个问题:我应该在setUp()
方法中还是在测试本身中对向量进行排序?
java - JUnit:在被测类中启用断言
由于在 JUnit 的 JVM 实例中没有启用断言,我曾多次被assert
JUnit 测试套件中没有失败的 Java 语句所困扰。需要明确的是,这些是实现内部的“黑盒”断言(检查不变量等),而不是 JUnit 测试本身定义的断言。当然,我想在测试套件中捕获任何此类断言失败。
显而易见的解决方案是在我运行 JUnit 时要非常小心地使用-enableassertions
,但我更喜欢更健壮的解决方案。一种替代方法是将以下测试添加到每个测试类:
有没有更自动的方法来实现这一点?JUnit 的系统范围配置选项?我可以在setUp()
方法中进行动态调用吗?
.net - Xunit:在一种测试方法中执行所有“断言”?
是否可以告诉 xUnit.netAssert.True()
在一种测试方法中执行所有操作?基本上在我们的一些使用/测试用例中,所有断言在逻辑上都属于一个相同的测试“范围”,我有例如这样的东西:
现在,如果例如第一个Assert.True(...)
失败,则不会执行/检查其他的。我宁愿不将这七个断言分解为单独的方法,因为它们在逻辑上确实属于一起(如果所有七个断言都一起通过,则 TC 只有完全“通过”)。
visual-c++ - 为什么我收到断言错误?
为什么输入大于 2 时出现断言错误?这是多项式程序的前身,其中数组的下标是每一项的幂,数组[下标] 处的元素是系数。
java - 在 Netbeans 中启用断言
我想做类似的事情
我该怎么做呢?