我注意到ert-run-tests-batch-and-exit
Emacs 中的 ERT 测试 ( ) 是按名称执行的(我的意思是顺序)。
我可以按照我定义它们的顺序以某种方式执行测试吗?
例如:
(ert-deftest test-2 ...
(ert-deftest test-1 ...
将首先执行“test-2”,然后执行“test-1”。
PS:我知道测试不应该依赖于顺序但仍然想要它。
据我所知,您不能告诉 ERT 按照定义的顺序执行测试。SELECTOR
但是,您可以通过将适当的参数传递给 ERT 的函数来运行测试,来指定您希望手动执行测试的顺序。您可以通过执行以下操作以交互方式尝试此操作:
M-x ert
RET (member test-2 test-1)
RET
您可能希望暂时创建test-2
和test-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)"