--- +附图ISO ERT直列测试成语(追加来自多个ERT呼叫TEST_OUTPUT)
问:如果有多个,分离的,独立于ERT呼叫,我可以安排来连接这些输出在同一个缓冲区中测试?在不同时间拨打ert电话?
(如果没有知道这些独立的测试集中thingamajig。)
例如如果我有两个(或更多)测试,例如在.emacs文件
(ert-deftest test1()(should t))
(ert 'test1)
... many miles away, quite likely in a separate file ...
(ert-deftest test2()(should t))
(ert 'test2)
双方将跑 - 我可以告诉这个通过查看*Messages*
...
Running 1 tests (2017-07-07 12:10:39-0700)
passed 1/1 test_ag_non-null_and_true
...
Running 1 tests (2017-07-07 12:10:39-0700)
passed 1/1 test-ag-code-disabling
...
但*ert*
缓冲区将只包含最后一次测试运行输出。
--- + DETAIL
--- ++动机
问:为什么我要这么做?
答:“内联测试”。特别是,在我的.emacs文件(以及它加载和/或需要的文件)中进行内联测试。
加载每次运行.emacs或类似文件的测试。 (可能还有其他测试是以批处理模式运行的 - 但我在这里说的是我想要立即运行的测试,每次加载.emacs都会加载(并且便于在修改.emacs时进行编辑/调试)
即我找了在线测试成语
我已经把代码在我的.emacs和〜/ lib目录/ GNU-Emacs的/ ** EL文件看起来像这样:。
;; some blob of code
(defun foo (arg) ...)
(ert-deftest test-foo() ...)
(ert 'test-foo)
ie ie我定义了功能,测试,并运行测试,彼此相邻。
...我还不如承认,我经常换一个`progn这个”周围,
(progn
;; some blob of code
(defun foo (arg) ...)
(ert-deftest test-foo() ...)
(ert 'test-foo)
)
,因为这可以很容易地进行编辑,以函数foo或测试,然后跳转到的结束预测和做eval-last-sexp(我已经绑定到Cj)。而且我还经常包装if或and和around,以便轻松禁用正在开发的功能。有时,如果特征有变量,则在*中混合。
(我使用过的其他ert-家庭跑步,像ERT-运行测试批和叔 - 运行 - 测试 - 交互式。但普通的老式叔似乎不够。)
(把defun定义和deftest一个progn这个里面或其他休息时间一些工具,希望defun定义始终处于顶级水平。这让multiline docstrings even uglier,但它是该死的方便,而且操作恕我直言工具对编程语言文件应该解析编程语言)。
所以,以后我会对另一个模块做同样的事情。远处。可能在一个单独的文件中,可能是一个库文件。
(progn
;; some blob of code
(defun bar (arg) ...)
(ert-deftest test-bar() ...)
(ert 'test-bar)
)
这两个模块都不应该知道另一个。
也不应该有一个集中的模块,其中包含所有这些测试的列表,最终运行。
如果仅仅是因为在加载文件的过程中可能出现故障。并且知道到目前为止通过或失败的测试是很方便的。
(尽管收集和运行,在结束所有试验丢失了增量测试运行的能力。)
--- ++应该是一个宏观
我恨重复。例如。在下面的东西中,我讨厌三次输入BAR。
(progn
;; some blob of code
(defun BAR (arg) ...)
(ert-deftest test-BAR() ...)
(ert 'test-BAR)
)
因此,当然我会创建一个宏来减少这种重复。虽然随后乡亲寻找ERT-deftest会感到困惑......
--- ++中等长度的简单的例子
如果我有
(ert-deftest test1()(should t))
(ert 'test1)
我会得到一个不错*ert*
缓冲区
Selector: test1
Passed: 1
Failed: 0
Skipped: 0
Total: 1/1
Started at: 2017-07-07 14:16:06-0700
Finished.
Finished at: 2017-07-07 14:16:07-0700
.
如果后来我有
(ert-deftest test2() (should t))
(ert 'test2)
它会删除TEST1在*ert*
缓冲输出,并与
Selector: test2
Passed: 1
Failed: 0
Skipped: 0
Total: 1/1
Started at: 2017-07-07 14:15:47-0700
Finished.
Finished at: 2017-07-07 14:15:47-0700
.
取代它,我想的是让串连两个测试的输出:
Selector: test1
Passed: 1
Failed: 0
Skipped: 0
Total: 1/1
Started at: 2017-07-07 14:16:06-0700
Finished.
Finished at: 2017-07-07 14:16:07-0700
.
Selector: test2
Passed: 1
Failed: 0
Skipped: 0
Total: 1/1
Started at: 2017-07-07 14:15:47-0700
Finished.
Finished at: 2017-07-07 14:15:47-0700
.