问题标签 [ert]
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 - ERT,相等性测试由于必须被视为相同的不同符号而失败
所以,我试图熟悉 ERT,Emacs 中的单元测试包。我想测试使用gensym
. 我可以确保 gensym 生成具有相同名称的符号,但它们不是相同的符号,这会导致失败。以下是为您提供更好主意的代码:
这是失败消息:
很公平,它是一个不同的符号,但预计会如此。我怎样才能让它成功?
编辑
到目前为止,这是我能想到的:
但如果有更好的方法,我会更高兴。
emacs - Elisp:在 ert 中运行测试时,sleep-for 不会阻塞
我正在尝试使用需要休眠以使后台进程继续进行的 ert 设置一些测试。我试过使用sleep-for
and accept-process-output
。两者都不可靠。这是一个小例子。
此测试仅休眠 5 秒,然后检查是否至少经过了 3 秒。使用sleep-for
它立即完成并失败。如果shell-command
未注释,则需要预期的 5 秒并成功!这里发生了什么?
编辑:
当我测试前面的示例时,我的环境中一定有一些奇怪的东西。这个稍作改动的示例包含一个后台进程,就像我需要测试的那样,但失败了。我以交互方式和使用命令对其进行了测试:
输出是:
编辑2:
似乎表明进程输出的新版本足以中断sleep-for
:
编辑3:
怀着沉重的心情,我发布了另一个版本:
似乎很明显sleep-for
不能依靠阻止。
unit-testing - 有没有更好的方法来解决 emacs lib 依赖关系?
当我尝试在 emacs 项目中运行测试文件时遇到了一个问题。
例如,我将这个项目克隆到我的主目录中,cd 进入测试目录,然后用于emacs -batch -l ert -l nrepl-tests.el -f ert-run-tests-batch-and-exit
运行测试。但它找不到不在同一目录中的文件 nrepl.el。所以,我将一个复制到 ~/nrep.el/test 中。但它说“无法打开加载文件:clojure-mode”。这是我关心的问题。
我确实有 clojure-mode 和其他库 nrepl.el 使用。但它们都在不同的目录中(在我的例子中,~/emacs.d/packs/live/clojure-pack/lib/)。为了运行测试,我是否必须将这些文件复制到我克隆的 nrepl 项目中?有没有更好的方法来像我们在 IDE 中那样运行测试文件。例如,在 Intellij 中,我只需在测试文件中编写导入语句,它就会自动为我准备依赖库。这让我很困扰。我想知道这个问题是否有最佳实践。
emacs - Emacs ERT 测试顺序可以更改吗?
我注意到ert-run-tests-batch-and-exit
Emacs 中的 ERT 测试 ( ) 是按名称执行的(我的意思是顺序)。
我可以按照我定义它们的顺序以某种方式执行测试吗?
例如:
将首先执行“test-2”,然后执行“test-1”。
PS:我知道测试不应该依赖于顺序但仍然想要它。
emacs - 当我需要 GUI 测试时,我应该如何运行 Emacs ERT 测试?
我用ert-run-tests-batch-and-exit
. 终端没问题。
但现在我需要使用带有 GUI 的 Emacs 进行测试。
从技术上讲ert-run-tests-batch-and-exit
,甚至可以工作。
但是在 shell 中的结果会是这样的:
就是这样。所有 ERT(backtrace)
都将被 Emacs 杀死(在它的*Messages*
缓冲区中)。
我只是想找到一种将它打印到标准输出的方法,这样我就可以看到出了什么问题。
UPD:也许有一些standard-output
变量技巧?
unit-testing - 为什么 ERT 说我的测试已中止?
我第一次尝试写一些elisp。我希望能够对其进行单元测试。
我有一个缓冲区,其中包含以下内容:
我跑去M-x eval-buffer
将ert-deftest
定义安装到我的 emacs 中。当我运行时M-x ert RET t RET
,我看到:
我在屏幕底部的小缓冲区中看到消息“测试失败:....”。为什么错误报告在那里而不是在 ERT 缓冲区中?
编辑:
似乎在命中失败的测试后出现“中止”消息,然后不会运行任何剩余的测试。例子:
M-x eval-buffer RET M-x ert RET
打开一个名为的缓冲区*ert*
,上面写着:
在*Messages*
我看到:
如果我进入*ert*
并按下d
,test2
我会得到以下内容*Messages*
:
如果我在intest3
上按 enter , expand ,然后按它,我可以说服它运行。看起来像:-
.A-
test3
d
在获得回溯方面,打b
过来test2
给了我:
我根本不理解回溯的输出。这种行为似乎与 ERT 文档所说的不符,所以我真的很困惑。这里发生了什么?
unit-testing - 无法以交互方式运行 Emacs ERT 测试
我正在尝试以交互方式运行 Emacs ert 测试,但它没有运行。我正在按照Emacs ERT 指南运行此示例测试:
从缓冲区执行此测试M-x ert RET t RET将输出:
但如果从控制台执行(以批处理模式),它会起作用:
我正在使用 emacs 24.5。
sql - 我们如何在 PLSQL developer 中获取数据库中所有表的 ERD 图?
我正在尝试从我的数据库中获取所有表的 ERD 图。这可能吗?我使用 PL/sql 开发人员.. 想知道是否有任何插件或任何方式来获得相同/
matlab - Matlab用两行之间的特定值填充矩阵(Bresenham)
对于学校项目,我们需要确定带有八个金属销的碳纤维板上的任何类型的损坏。为了确定损坏,我们使用多点之间的电阻率测量。
我们使用 Matlab 脚本来使点之间的电阻可见。我们在矩阵中绘制值并使用 Bresenham 函数创建一条线。
问题如下:
Bresenham 函数确实在矩阵中创建了线,但是我们正在寻找一个函数来填充两行之间的矩阵,并将这两行的平均值组合起来。的平均值S1_(1)
和S1_(2)
需要填充行x1_1,y1_1
和之间的矩阵x1_1,y1_2
。最后的图是绘制所有点的地方,当线之间的所有区域都被填充时,这应该在圆的某处创建一个高顶:
有人可以帮我解决这个问题吗?
更新:
我们终于让它工作了,我们调用一个函数来创建一个三角矩阵并将所有这些矩阵相加。
emacs - ISO ert 内联测试习惯用法(从多个 ert 调用附加 TEST_OUTPUT)
---+ 简介
问:如果我对 ert 有多个单独的独立调用,我可以安排将这些测试的输出连接到同一个缓冲区中吗?对 ert 的调用是在不同的时间进行的?
(没有一个了解这些独立测试的集中式 thingamajig。)
例如,如果我有两个(或更多)测试,例如在 .emacs 文件中
两者都会运行 - 我可以通过查看*Messages*
但是*ert*
缓冲区将只包含最后一次测试运行的输出。
---+ 详情
---++ 动机
问:我为什么要这样做?
答:“在线测试”。特别是对我的 .emacs 文件(以及它加载和/或需要的文件)中的内容进行内联测试。
每次加载 .emacs 或类似文件时运行的测试。(可能还有其他我在批处理模式下运行的测试 - 但在这里我谈论的是我想在每次加载 .emacs 时立即运行的测试(并且在修改 .emacs 时便于编辑/调试)。
即我正在寻找内联测试的成语。
我一直将代码放入我的 .emacs 和 ~/lib/gnu-emacs/**.el 文件中,如下所示:
即我定义函数、测试并运行测试,就在彼此旁边。
......我不妨承认我经常包裹一个“progn”,
因为这样可以很容易地对函数 foo 或测试进行编辑,然后跳转到 progn 的末尾并执行 eval-last-sexp(我已绑定到 Cj)。而且我还经常包装 if 或 and and ,以便轻松禁用正在开发的功能。如果特征有变量,有时用 let* in 然后混合。
(我使用过其他ert - family 跑步者,例如ert-run-tests-batch和ert-run-tests-interactively。但普通的旧ert似乎就足够了。)
(将defun和deftest放在progn或其他文件中会破坏一些期望 defun 始终处于顶层的工具。它使多行文档字符串更加丑陋。但这非常方便,恕我直言,对编程语言文件进行操作的工具应该解析编程语。)
所以,稍后,我将为另一个模块做同样的事情。远处。可能在一个单独的文件中,可能是一个库文件。
两个模块都不应该知道另一个模块。
也不应该有一个集中的模块,其中包含所有此类测试的列表,并在最后运行。
如果只是因为加载文件的中途可能会失败。并且可以很方便地知道到目前为止哪些测试通过或失败。
(而在最后收集和运行所有测试会失去增量测试运行能力。)
---++ 应该是宏
我讨厌重复。例如,在下面的内容中,我讨厌必须输入三遍 BAR。
因此,我当然会创建一个宏来减少这种重复。虽然那时寻找ert-deftest 的人会感到困惑......
---++ 中等长度的简单示例
如果我有
我会得到一个很好的*ert*
缓冲区
如果以后我有
它将擦除*ert*
缓冲区中 test1 的输出,并将其替换为
我想要的是连接两个测试的输出: