问题标签 [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 投票
2 回答
2053 浏览

unit-testing - 如何在 R 中进行断言?

是否推荐使用RUnit的 check* 函数来制作前置条件/​​后置条件语句,或者这是否会在性能或其他方面带来一些惩罚?

0 投票
2 回答
6594 浏览

debugging - .exe/wincore.cpp 中的调试断言失败

我在 VC++ 6.0 中做一个 RT 模拟器。每当它执行时,在没有打开开放架构计算机(OAC,它是飞行中的总线控制器)的情况下,程序可以正常执行。但是在 OAC ON 的情况下,程序在 Debug/.exe/wincore.cpp 的第 1 行给出了 Debug 断言失败。980.可能是什么问题?如果可能,请提供解决方案。

这是完整的 DestroyWindow 函数。

0 投票
4 回答
2800 浏览

java - Cobertura 覆盖范围和 assert 关键字

Cobertura 测量的单元测试的行覆盖率受到影响,因为我有assert测试未涵盖的语句。我应该测试assert离子吗?有什么方法可以让 Cobertura 忽略它们,这样它们就不会影响我的测试覆盖率?

0 投票
3 回答
514 浏览

javascript - Ajax 驱动的 JavaScript 运行时断言框架

在开发一个包含越来越多 JavaScript 代码的大型 Web 应用程序时,我们就如何提高代码质量进行了一次头脑风暴会议。

最初的想法之一是引入单元测试。这将是一个长期目标;然而,这并不能解决最常见的回归原因:不断变化的 DOM 和浏览器特定问题。

单元测试在模拟的、无 DOM 的环境中运行,并且不在页面上。

我正在寻找的是一个断言框架,它可以像这样插入到代码中:

我找到了可以做到这一点的断言框架,但它们要么登录到控制台或登录到 DOM,要么打开一个愚蠢的弹出窗口。这些都不能与(数千个)自动化测试一起工作。 我正在寻找的是一个运行时断言框架,它通过 AJAX 记录失败的断言!理想情况下,它应该是:

  • 内置通用断言。
  • 与 JQuery 模块、闭包集成。
  • 记录(通过 Ajax)断言、文件名、页面、行号、失败原因、环境的一些预配置变量(浏览器、发布版本等)。
  • 支持失败时的回调。(如果任何断言框架都可以做到这一点,我很乐意编写回调来做 Ajax 部分。)
  • 适用于所有浏览器。
  • 从生产版本中排除是微不足道的。
  • 维护的代码库。
0 投票
1 回答
479 浏览

ruby-on-rails - 在 Rails 的测试之外使用断言

我想开始在我的控制器和模型中放置断言,以断言运行时行为。

如何访问单元测试中可用的所有断言助手?

IE 我想做类似的事情

是否只有我需要的文件?

0 投票
3 回答
1022 浏览

language-agnostic - 断言()与强制():选择哪个?

我很难选择是否应该在 D 中“强制”一个条件或“断言”一个条件。(不过,这与语言无关。)

从理论上讲,我知道您使用断言来查找错误,并强制执行其他条件以检查非典型条件。例如,您可能会说assert(count >= 0)为您的方法提供一个参数,因为这表明调用者存在错误,并且您会说enforce(isNetworkConnected),因为那不是错误,它只是您假设的东西,这很可能不是真的超出您控制范围的合法情况。

此外,断言可以作为优化从代码中删除,没有副作用,但不能删除强制执行,因为它们必须始终执行其条件代码。因此,如果我正在实现一个惰性填充容器,它在第一次访问它的任何方法时填充自己,我说enforce(!empty())而不是assert(!empty()),因为检查empty()必须总是发生,因为它惰性地执行内部代码。

所以我想我知道他们应该是这个意思。但是理论比实践容易,我很难实际应用这些概念。

考虑以下:

我正在制作一个迭代其他两个范围的范围(类似于迭代器),并添加结果。(对于函数式程序员:我知道我可以使用它map!("a + b"),但我暂时忽略它,因为它没有说明问题。)所以我的代码在伪代码中看起来像这样:

这应该是断言还是强制执行?(范围没有同时为空是调用者的错吗?它可能无法控制范围的来源——它可能来自用户——但话又说回来,它仍然看起来像一个错误,不是吗?)

或者这是另一个伪代码示例:

这应该是断言还是强制执行?路径可能来自用户——因此它可能不是一个错误——但它仍然是此方法的前提条件,即路径应该是有效的。我主张还是强制执行?

谢谢!

0 投票
3 回答
567 浏览

java - 带有断言的部分合同设计

我想就合同设计的部分实施的想法获得一些意见。目标是在不需要外部库的情况下向不提供轻量级合约(仅不变量和后置条件)的语言添加。

我的示例是用 Java 编写的,但我认为这个想法适用于许多 OO 语言。

我们有一个这样的类:

我们以这种方式扩展上面的代码:

这种方法的局限性:
- 没有先决条件。
- 合同不是继承的(但请注意,不变量和后置条件受到保护,可以被子类重用)。
- 没有检查不变量和后置条件不会修改我们对象的状态,因此存在副作用的风险。
- 合同不是明确的我们文件的一部分。
- 我们需要让每个类都可以克隆。

现在,一些问题:
- 这种方法是否会以任何方式损害表演?我的意思是如果禁用断言,JIT 编译器甚至会删除 old 和 res 局部变量?
- 你觉得这种方法有什么缺点吗?你为什么不在课堂上使用它?
- 你能建议任何改进吗?

感谢您的阅读和您的意见。

0 投票
12 回答
45128 浏览

c# - 检测是否在 WPF 和 Winforms 中的 UI 线程上

我在下面编写了一个断言方法Ensure.CurrentlyOnUiThread(),用于检查当前线程是否为 UI 线程。

  • 这在检测 Winforms UI 线程时是否可靠?
  • 我们的应用程序混合了 WPF 和 Winforms,如何最好地检测有效的 WPF UI 线程?
  • 有一个更好的方法吗?也许是代码合同?

确保.cs

0 投票
3 回答
219 浏览

java - 为什么在部署中不使用断言

为什么断言通常不用于部署?我研究了断言公共方法参数是不合适的..但是断言私有方法参数在部署中是合适的..为什么?

0 投票
4 回答
1414 浏览

java - 如何在 jetty-maven-plugin 中启用 Java 断言?

如何在jetty-maven-plugin中启用断言?默认情况下,它们被禁用。