我第一次试着写一些小精灵。我希望能够对它进行单元测试。
我有一个缓冲区,其中包含以下内容:
(ert-deftest addition-test ()
(should (= (+ 1 2) 4)))我运行M-x eval-buffer将ert-deftest定义安装到emacs中。当我运行M-x ert RET t RET时,我看到:
Selector: t
Passed: 0
Failed: 0
Total: 0/1
Started at: 2015-11-16 00:27:46-0800
Aborted.
Aborted at: 2015-11-16 00:27:46-0800
A
A addition-test
aborted我看到了“测试失败:.”的信息。在屏幕底部的微型缓冲器中。为什么会在ERT缓冲器中报告故障?
编辑:
似乎“中止”消息发生在一个失败的测试被击中之后,然后任何剩余的测试都不会运行。示例:
(ert-deftest test1 ()
(should 1))
(ert-deftest test2 ()
(should nil))
(ert-deftest test3 ()
(should 1))M-x eval-buffer RET M-x ert RET打开了一个名为*ert*的缓冲区,它说:
Selector: t
Passed: 1
Failed: 0
Total: 1/3
Started at: 2015-11-16 02:06:57-0800
Aborted.
Aborted at: 2015-11-16 02:06:57-0800
.A-
A test2
aborted在*Messages*中,我看到:
Aborted: Ran 3 tests, 1 results were as expected
ert-fail: Test failed: ((should nil) :form nil :value nil)如果我进入*ert*并按下d in test2,则在*Messages*中得到以下内容
Running test test2...ABORTED
ert-fail: Test failed: ((should nil) :form nil :value nil)我可以说服它运行test3,如果我在- in .A-上点击enter,展开test3,然后点击d。看上去像是:
Selector: t
Passed: 2
Failed: 0
Total: 2/3
Started at: 2015-11-16 02:08:40-0800
Aborted.
Aborted at: 2015-11-16 02:08:40-0800
.A.
A test2
aborted
. test3
passed在获取回溯跟踪方面,点击b之上的test2会给我带来如下结果:
ert-results-pop-to-backtrace-for-test-at-point: cl-etypecase failed: [cl-struct-ert-test-aborted-with-non-local-exit (((should nil) :form nil :value nil))], (ert-test-passed ert-test-result-with-condition)我一点也不明白回溯跟踪的输出。这种行为似乎不符合ERT文档的说法,所以我真的很困惑。这里发生了什么事?
发布于 2015-11-16 11:50:29
您发布的代码在一个干净的Emacs中工作,它是从emacs -Q开始的。最有可能的是,它是由某个已加载的库造成的。
https://stackoverflow.com/questions/33730838
复制相似问题