在第一个未通过的测试中中止 ExUnit
Abort ExUnit on the first test that does not pass
在 Ruby 中,特别是 RSpec,您可以告诉测试运行器在第一个未通过命令行标志 --fail-fast
的测试时中止。这有助于避免在连续修复大量测试时浪费时间或失去注意力,例如在进行测试驱动或行为驱动开发时。
现在在 Elixir 和 ExUnit 上,我正在寻找一种方法来做到这一点。有办法吗?
不幸的是(据我所知)no such flag implemented。
但是,您可以 运行 通过
进行单次测试
mix test path/to/testfile.exs:12
其中 12 是测试的行号。
希望对您有所帮助!
这没有多大意义,因为 Elixir 中的测试是 a) 运行 非常快并且 b) 在大多数情况下 运行 是异步的。在失败的测试中立即终止测试套件是一种反模式,这就是 ExUnit
作者不允许这样做的原因。
人们仍然可以选择射自己的腿:只需为“测试失败”事件的 EventManager
and kill the whole application 实现自定义处理程序。
对于 BDD,最好使用 tags
,运行 仅包含此功能的测试套件。这样您就可以在将来的任何时候运行 测试每个功能。
此外,作为最后的手段,可能 运行 仅通过将文件名传递给特定案例 mix test
and/or 仅通过传递文件名后跟一个特定测试冒号和行号。
自 Elixir 1.8 以来有 such an option。
使用 --max-failures
开关限制评估失败的测试数量。要在第一次失败后停止测试套件,运行 这个:
mix test --max-failures 1
在 Ruby 中,特别是 RSpec,您可以告诉测试运行器在第一个未通过命令行标志 --fail-fast
的测试时中止。这有助于避免在连续修复大量测试时浪费时间或失去注意力,例如在进行测试驱动或行为驱动开发时。
现在在 Elixir 和 ExUnit 上,我正在寻找一种方法来做到这一点。有办法吗?
不幸的是(据我所知)no such flag implemented。
但是,您可以 运行 通过
进行单次测试mix test path/to/testfile.exs:12
其中 12 是测试的行号。
希望对您有所帮助!
这没有多大意义,因为 Elixir 中的测试是 a) 运行 非常快并且 b) 在大多数情况下 运行 是异步的。在失败的测试中立即终止测试套件是一种反模式,这就是 ExUnit
作者不允许这样做的原因。
人们仍然可以选择射自己的腿:只需为“测试失败”事件的 EventManager
and kill the whole application 实现自定义处理程序。
对于 BDD,最好使用 tags
,运行 仅包含此功能的测试套件。这样您就可以在将来的任何时候运行 测试每个功能。
此外,作为最后的手段,可能 运行 仅通过将文件名传递给特定案例 mix test
and/or 仅通过传递文件名后跟一个特定测试冒号和行号。
自 Elixir 1.8 以来有 such an option。
使用 --max-failures
开关限制评估失败的测试数量。要在第一次失败后停止测试套件,运行 这个:
mix test --max-failures 1