1

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

例如:

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

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

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

4

1 回答 1

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)"
于 2014-08-25T08:47:50.647 回答