问题标签 [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.
unit-testing - 如何在 R 中进行断言?
是否推荐使用RUnit的 check* 函数来制作前置条件/后置条件语句,或者这是否会在性能或其他方面带来一些惩罚?
debugging - .exe/wincore.cpp 中的调试断言失败
我在 VC++ 6.0 中做一个 RT 模拟器。每当它执行时,在没有打开开放架构计算机(OAC,它是飞行中的总线控制器)的情况下,程序可以正常执行。但是在 OAC ON 的情况下,程序在 Debug/.exe/wincore.cpp 的第 1 行给出了 Debug 断言失败。980.可能是什么问题?如果可能,请提供解决方案。
这是完整的 DestroyWindow 函数。
java - Cobertura 覆盖范围和 assert 关键字
Cobertura 测量的单元测试的行覆盖率受到影响,因为我有assert
测试未涵盖的语句。我应该测试assert
离子吗?有什么方法可以让 Cobertura 忽略它们,这样它们就不会影响我的测试覆盖率?
javascript - Ajax 驱动的 JavaScript 运行时断言框架
在开发一个包含越来越多 JavaScript 代码的大型 Web 应用程序时,我们就如何提高代码质量进行了一次头脑风暴会议。
最初的想法之一是引入单元测试。这将是一个长期目标;然而,这并不能解决最常见的回归原因:不断变化的 DOM 和浏览器特定问题。
单元测试在模拟的、无 DOM 的环境中运行,并且不在页面上。
我正在寻找的是一个断言框架,它可以像这样插入到代码中:
我找到了可以做到这一点的断言框架,但它们要么登录到控制台或登录到 DOM,要么打开一个愚蠢的弹出窗口。这些都不能与(数千个)自动化测试一起工作。 我正在寻找的是一个运行时断言框架,它通过 AJAX 记录失败的断言!理想情况下,它应该是:
- 内置通用断言。
- 与 JQuery 模块、闭包集成。
- 记录(通过 Ajax)断言、文件名、页面、行号、失败原因、环境的一些预配置变量(浏览器、发布版本等)。
- 支持失败时的回调。(如果任何断言框架都可以做到这一点,我很乐意编写回调来做 Ajax 部分。)
- 适用于所有浏览器。
- 从生产版本中排除是微不足道的。
- 维护的代码库。
ruby-on-rails - 在 Rails 的测试之外使用断言
我想开始在我的控制器和模型中放置断言,以断言运行时行为。
如何访问单元测试中可用的所有断言助手?
IE 我想做类似的事情
是否只有我需要的文件?
language-agnostic - 断言()与强制():选择哪个?
我很难选择是否应该在 D 中“强制”一个条件或“断言”一个条件。(不过,这与语言无关。)
从理论上讲,我知道您使用断言来查找错误,并强制执行其他条件以检查非典型条件。例如,您可能会说assert(count >= 0)
为您的方法提供一个参数,因为这表明调用者存在错误,并且您会说enforce(isNetworkConnected)
,因为那不是错误,它只是您假设的东西,这很可能不是真的超出您控制范围的合法情况。
此外,断言可以作为优化从代码中删除,没有副作用,但不能删除强制执行,因为它们必须始终执行其条件代码。因此,如果我正在实现一个惰性填充容器,它在第一次访问它的任何方法时填充自己,我说enforce(!empty())
而不是assert(!empty())
,因为检查empty()
必须总是发生,因为它惰性地执行内部代码。
所以我想我知道他们应该是这个意思。但是理论比实践容易,我很难实际应用这些概念。
考虑以下:
我正在制作一个迭代其他两个范围的范围(类似于迭代器),并添加结果。(对于函数式程序员:我知道我可以使用它map!("a + b")
,但我暂时忽略它,因为它没有说明问题。)所以我的代码在伪代码中看起来像这样:
这应该是断言还是强制执行?(范围没有同时为空是调用者的错吗?它可能无法控制范围的来源——它可能来自用户——但话又说回来,它仍然看起来像一个错误,不是吗?)
或者这是另一个伪代码示例:
这应该是断言还是强制执行?路径可能来自用户——因此它可能不是一个错误——但它仍然是此方法的前提条件,即路径应该是有效的。我主张还是强制执行?
谢谢!
java - 带有断言的部分合同设计
我想就合同设计的部分实施的想法获得一些意见。目标是在不需要外部库的情况下向不提供轻量级合约(仅不变量和后置条件)的语言添加。
我的示例是用 Java 编写的,但我认为这个想法适用于许多 OO 语言。
我们有一个这样的类:
我们以这种方式扩展上面的代码:
这种方法的局限性:
- 没有先决条件。
- 合同不是继承的(但请注意,不变量和后置条件受到保护,可以被子类重用)。
- 没有检查不变量和后置条件不会修改我们对象的状态,因此存在副作用的风险。
- 合同不是明确的我们文件的一部分。
- 我们需要让每个类都可以克隆。
现在,一些问题:
- 这种方法是否会以任何方式损害表演?我的意思是如果禁用断言,JIT 编译器甚至会删除 old 和 res 局部变量?
- 你觉得这种方法有什么缺点吗?你为什么不在课堂上使用它?
- 你能建议任何改进吗?
感谢您的阅读和您的意见。
c# - 检测是否在 WPF 和 Winforms 中的 UI 线程上
我在下面编写了一个断言方法Ensure.CurrentlyOnUiThread(),用于检查当前线程是否为 UI 线程。
- 这在检测 Winforms UI 线程时是否可靠?
- 我们的应用程序混合了 WPF 和 Winforms,如何最好地检测有效的 WPF UI 线程?
- 有一个更好的方法吗?也许是代码合同?
确保.cs
java - 为什么在部署中不使用断言
为什么断言通常不用于部署?我研究了断言公共方法参数是不合适的..但是断言私有方法参数在部署中是合适的..为什么?
java - 如何在 jetty-maven-plugin 中启用 Java 断言?
如何在jetty-maven-plugin中启用断言?默认情况下,它们被禁用。