在 Ruby 中,特别是 RSpec,您可以告诉测试运行器在第一个未通过命令行标志的测试时中止--fail-fast
。这有助于在连续修复大量测试时不浪费时间或失去注意力,例如在进行测试驱动或行为驱动开发时。
现在在带有 ExUnit 的 Elixir 上,我正在寻找一种方法来做到这一点。有没有办法做到这一点?
在 Ruby 中,特别是 RSpec,您可以告诉测试运行器在第一个未通过命令行标志的测试时中止--fail-fast
。这有助于在连续修复大量测试时不浪费时间或失去注意力,例如在进行测试驱动或行为驱动开发时。
现在在带有 ExUnit 的 Elixir 上,我正在寻找一种方法来做到这一点。有没有办法做到这一点?
从 Elixir 1.8 开始就有这样的选择。
使用--max-failures
开关来限制评估失败的测试数量。要在第一次失败后停止测试套件,请运行以下命令:
mix test --max-failures 1
这没有多大意义,因为 Elixir 中的测试 a) 运行速度极快, b) 在大多数情况下是异步运行的。在失败的测试中立即终止测试套件是一种反模式,这就是作者不允许这样做的原因ExUnit
。
仍然可以选择自己动手:只需为“测试失败”事件实现一个自定义处理程序EventManager
并终止整个应用程序。
对于 BDD,最好使用tags
,运行仅包含此功能的测试套件。这样,您将能够在未来的任何时间运行每个功能的测试。
mix test
此外,作为最后的手段,可能仅通过将文件名传递给和/或仅通过传递文件名后跟冒号和行号来运行特定案例和/或特定测试。