6

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

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

4

3 回答 3

5

从 Elixir 1.8 开始就有这样的选择。

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

mix test --max-failures 1
于 2020-01-16T17:44:28.637 回答
1

不幸的是(据我所知)没有实施这样的标志

但是,您可以通过以下方式运行单个测试

mix test path/to/testfile.exs:12

其中 12 是测试的行号。

希望有帮助!

于 2018-05-23T13:19:26.243 回答
0

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

仍然可以选择自己动手:只需为“测试失败”事件实现一个自定义处理程序EventManager并终止整个应用程序。


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

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

于 2018-05-23T14:23:25.173 回答