可以更改Emacs ERT测试订单吗?

时间:2014-08-24 18:54:47

标签: emacs ert

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

例如:

(ert-deftest test-2 ...
(ert-deftest test-1 ...

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

PS:我知道测试不应该依赖于订单,但仍然需要它。

1 个答案:

答案 0 :(得分:3)

据我所知,您无法告诉ERT按照定义的顺序执行测试。但是,您可以通过将适当的SELECTOR参数传递给ERT用于运行测试的函数来指定您希望手动执行测试的顺序。您可以通过以下方式以交互方式尝试:

M-x ert RET (member test-2 test-1) RET

您可能希望暂时使test-2test-1失败,以便您可以验证ERT是否按照您指定的顺序运行它们。

现在,基于您在问题中提到ert-run-tests-batch-and-exit的事实,我假设您要从命令行运行测试。以下命令将执行您想要的操作(其中<test-file>是包含测试的文件的名称):

emacs -batch -l ert -l <test-file> --eval "(ert-run-tests-batch-and-exit '(member test-2 test-1))"

加成

如果您希望避免每次执行此命令时都必须指定测试运行的顺序,则可以将以下内容添加到<test-file>

(defvar test-order '(member test-2 test-1))

有了这个,您可以通过命令行运行测试:

emacs -batch -l ert -l <test-file> --eval "(ert-run-tests-batch-and-exit test-order)"