为什么 ERT 说我的测试已中止?
Why does ERT say my test is aborted?
我第一次尝试编写一些 elisp。我希望能够对其进行 运行 单元测试。
我有一个缓冲区,其中包含以下内容:
(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
而且我在屏幕底部的迷你缓冲区中看到消息 "Test failed: ...."。为什么故障报告在那里而不是在 ERT 缓冲区中?
编辑:
看来 "aborted" 消息是在命中失败的测试后出现的,然后任何剩余的测试都不是 运行。示例:
(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*
并在 test2
上按 d
,我会在 *Messages*
中得到以下内容:
Running test test2...ABORTED
ert-fail: Test failed: ((should nil) :form nil :value nil)
如果我在 .A-
中的 -
上按回车键,展开 test3
,然后按 [=25],我可以说服它 运行 test3
=] 就可以了。看起来像:
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
在获得回溯方面,在 test2
上点击 b
给我:
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 文档所说的不符,所以我真的很困惑。这是怎么回事?
您发布的代码适用于以 emacs -Q
开头的干净 Emacs。最有可能的是,它是由某些以某种方式加载的库引起的。
我第一次尝试编写一些 elisp。我希望能够对其进行 运行 单元测试。
我有一个缓冲区,其中包含以下内容:
(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
而且我在屏幕底部的迷你缓冲区中看到消息 "Test failed: ...."。为什么故障报告在那里而不是在 ERT 缓冲区中?
编辑:
看来 "aborted" 消息是在命中失败的测试后出现的,然后任何剩余的测试都不是 运行。示例:
(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*
并在 test2
上按 d
,我会在 *Messages*
中得到以下内容:
Running test test2...ABORTED
ert-fail: Test failed: ((should nil) :form nil :value nil)
如果我在 .A-
中的 -
上按回车键,展开 test3
,然后按 [=25],我可以说服它 运行 test3
=] 就可以了。看起来像:
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
在获得回溯方面,在 test2
上点击 b
给我:
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 文档所说的不符,所以我真的很困惑。这是怎么回事?
您发布的代码适用于以 emacs -Q
开头的干净 Emacs。最有可能的是,它是由某些以某种方式加载的库引起的。