在Ruby中,特别是RSpec,您可以告诉测试运行器在未通过命令行标志--fail-fast
的第一个测试中止。在连续修复大量测试时,例如在进行测试驱动或行为驱动的开发时,这有助于避免浪费时间或失去焦点。
现在有了ExUnit的Elixir,我正在寻找一种方法来做到这一点。有没有办法做到这一点?
答案 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
和/或特定测试来运行特定情况。