我注意到Emacs中的ERT测试(ert-run-tests-batch-and-exit
)是按名称执行的(我的意思是命令)。
我可以按照我定义的顺序以某种方式执行测试吗?
例如:
(ert-deftest test-2 ...
(ert-deftest test-1 ...
将首先执行“test-2”,然后执行“test-1”。
PS:我知道测试不应该依赖于订单,但仍然需要它。
答案 0 :(得分:3)
据我所知,您无法告诉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)"