问题标签 [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.

0 投票
3 回答
138 浏览

unit-testing - ERT,相等性测试由于必须被视为相同的不同符号而失败

所以,我试图熟悉 ERT,Emacs 中的单元测试包。我想测试使用gensym. 我可以确保 gensym 生成具有相同名称的符号,但它们不是相同的符号,这会导致失败。以下是为您提供更好主意的代码:

这是失败消息:

很公平,它是一个不同的符号,但预计会如此。我怎样才能让它成功?

编辑

到目前为止,这是我能想到的:

但如果有更好的方法,我会更高兴。

0 投票
4 回答
759 浏览

emacs - Elisp:在 ert 中运行测试时,sleep-for 不会阻塞

我正在尝试使用需要休眠以使后台进程继续进行的 ert 设置一些测试。我试过使用sleep-forand accept-process-output。两者都不可靠。这是一个小例子。

此测试仅休眠 5 秒,然后检查是否至少经过了 3 秒。使用sleep-for它立即完成并失败。如果shell-command未注释,则需要预期的 5 秒并成功!这里发生了什么?

编辑:

当我测试前面的示例时,我的环境中一定有一些奇怪的东西。这个稍作改动的示例包含一个后台进程,就像我需要测试的那样,但失败了。我以交互方式和使用命令对其进行了测试:

输出是:

编辑2:

似乎表明进程输出的新版本足以中断sleep-for

编辑3:

怀着沉重的心情,我发布了另一个版本:

似乎很明显sleep-for不能依靠阻止。

0 投票
1 回答
122 浏览

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 中,我只需在测试文件中编写导入语句,它就会自动为我准备依赖库。这让我很困扰。我想知道这个问题是否有最佳实践。

0 投票
1 回答
124 浏览

emacs - Emacs ERT 测试顺序可以更改吗?

我注意到ert-run-tests-batch-and-exitEmacs 中的 ERT 测试 ( ) 是按名称执行的(我的意思是顺序)。
我可以按照我定义它们的顺序以某种方式执行测试吗?

例如:

将首先执行“test-2”,然后执行“test-1”。

PS:我知道测试不应该依赖于顺序但仍然想要它。

0 投票
0 回答
108 浏览

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变量技巧?

0 投票
1 回答
354 浏览

unit-testing - 为什么 ERT 说我的测试已中止?

我第一次尝试写一些elisp。我希望能够对其进行单元测试。

我有一个缓冲区,其中包含以下内容:

我跑去M-x eval-bufferert-deftest定义安装到我的 emacs 中。当我运行时M-x ert RET t RET,我看到:

我在屏幕底部的小缓冲区中看到消息“测试失败:....”。为什么错误报告在那里而不是在 ERT 缓冲区中?

编辑:

似乎在命中失败的测试后出现“中止”消息,然后不会运行任何剩余的测试。例子:

M-x eval-buffer RET M-x ert RET打开一个名为的缓冲区*ert*,上面写着:

*Messages*我看到:

如果我进入*ert*并按下dtest2我会得到以下内容*Messages*

如果我在intest3上按 enter , expand ,然后按它,我可以说服它运行。看起来像:-.A-test3d

在获得回溯方面,打b过来test2给了我:

我根本不理解回溯的输出。这种行为似乎与 ERT 文档所说的不符,所以我真的很困惑。这里发生了什么?

0 投票
1 回答
365 浏览

unit-testing - 无法以交互方式运行 Emacs ERT 测试

我正在尝试以交互方式运行 Emacs ert 测试,但它没有运行。我正在按照Emacs ERT 指南运行此示例测试:

从缓冲区执行此测试M-x ert RET t RET将输出:

但如果从控制台执行(以批处理模式),它会起作用:

我正在使用 emacs 24.5。

0 投票
0 回答
224 浏览

sql - 我们如何在 PLSQL developer 中获取数据库中所有表的 ERD 图?

我正在尝试从我的数据库中获取所有表的 ERD 图。这可能吗?我使用 PL/sql 开发人员.. 想知道是否有任何插件或任何方式来获得相同/

0 投票
0 回答
203 浏览

matlab - Matlab用两行之间的特定值填充矩阵(Bresenham)

对于学校项目,我们需要确定带有八个金属销的碳纤维板上的任何类型的损坏。为了确定损坏,我们使用多点之间的电阻率测量。

我们使用 Matlab 脚本来使点之间的电阻可见。我们在矩阵中绘制值并使用 Bresenham 函数创建一条线。

问题如下:

Bresenham 函数确实在矩阵中创建了线,但是我们正在寻找一个函数来填充两行之间的矩阵,并将这两行的平均值组合起来。的平均值S1_(1)S1_(2)需要填充行x1_1,y1_1和之间的矩阵x1_1,y1_2。最后的图是绘制所有点的地方,当线之间的所有区域都被填充时,这应该在圆的某处创建一个高顶:

最终情节

有人可以帮我解决这个问题吗?

更新:

我们终于让它工作了,我们调用一个函数来创建一个三角矩阵并将所有这些矩阵相加。

正确的情节

0 投票
1 回答
27 浏览

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-batchert-run-tests-interactively。但普通的旧ert似乎就足够了。)

(将defundeftest放在progn或其他文件中会破坏一些期望 defun 始终处于顶层的工具。它使多行文档字符串更加丑陋。但这非常方便,恕我直言,对编程语言文件进行操作的工具应该解析编程语。)

所以,稍后,我将为另一个模块做同样的事情。远处。可能在一个单独的文件中,可能是一个库文件。

两个模块都不应该知道另一个模块。

也不应该有一个集中的模块,其中包含所有此类测试的列表,并在最后运行。

如果只是因为加载文件的中途可能会失败。并且可以很方便地知道到目前为止哪些测试通过或失败。

(而在最后收集和运行所有测试会失去增量测试运行能力。)

---++ 应该是宏

我讨厌重复。例如,在下面的内容中,我讨厌必须输入三遍 BAR。

因此,我当然会创建一个宏来减少这种重复。虽然那时寻找ert-deftest 的人会感到困惑......

---++ 中等长度的简单示例

如果我有

我会得到一个很好的*ert*缓冲区

如果以后我有

它将擦除*ert*缓冲区中 test1 的输出,并将其替换为

我想要的是连接两个测试的输出: