在第一次未通过的测试中中止ExUnit

时间:2018-05-23 12:35:16

标签: automated-tests elixir ex-unit

在Ruby中,特别是RSpec,您可以告诉测试运行器在未通过命令行标志--fail-fast的第一个测试中止。在连续修复大量测试时,例如在进行测试驱动或行为驱动的开发时,这有助于避免浪费时间或失去焦点。

现在有了ExUnit的Elixir,我正在寻找一种方法来做到这一点。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:2)

从Elixir 1.8开始,有such an option

使用--max-failures开关限制评估失败的测试的数量。要在第一个失败后停止测试套件,请运行以下命令:

mix test --max-failures 1

答案 1 :(得分:1)

不幸的是(据我所知)no such flag implemented

但是,您可以通过

运行单个测试
mix test path/to/testfile.exs:12

其中12是测试的行号。

希望有所帮助!

答案 2 :(得分:0)

这没有太大意义,因为Elixir中的测试是a)快速运行b)在大多数情况下是异步运行。在失败的测试中立即终止测试套件是一种反模式,这就是ExUnit作者不允许的原因。

还有一个选项可以自己拍摄:只需为EventManager实现自定义处理程序,并在“测试失败”事件中终止whole application

对于BDD,最好使用tags,运行测试套件时只包含此功能。这样,您就可以在将来的任何时间为每个功能运行测试。

此外,作为最后的手段,只能通过传递文件名后跟冒号和行号将文件名传递给mix test和/或特定测试来运行特定情况。