测试中没有超时

时间:2015-07-09 14:55:28

标签: elixir

我喜欢在我的测试中使用断点来查看出现了什么问题,但测试中的30秒超时阻止我自由环顾四周。

有没有办法禁用它?以下不起作用:

@tag timeout: 0
test "something" do 
  assert something == 42
end

2 个答案:

答案 0 :(得分:14)

UPDATE:

  

使用Elixir 1.1,您还可以使用--trace选项运行测试:mix test --trace。它会自动将超时设置为无穷大。

     

- JoséValim

PRE Elixir 1.1:

也许尝试使用:

ExUnit.configure(timeout: 600_000)
# or even:
ExUnit.configure(timeout: :infinity)

Docu and source code

答案 1 :(得分:3)

创建一个新答案,因为Stackoverflow上的两个独立编辑器认为我用代码中嵌入的实际文档来编辑接受的答案“旨在解决帖子的作者,并且没有任何编辑意义”,尽管更新了答案由Elixir git存储库(lol)中的文档作者完全撰写,尽管给出了4(!)额外的方法来设置答案或评论中未概述的超时时间,但它“没有更准确”。

五种方式:

  1. 通过设置“ @tag timeout: x”(接受:infinity)进行每次测试
  2. 通过设置“ @moduletag timeout: x”来接受每个测试模块(接受:infinity)
  3. 通过“ ExUnit.start(timeout: x)”配置进行全局
  4. 通过运行设置超时的“ mix test --timeout x
  5. 或运行“ mix test --trace”将超时设置为无穷大

(在使用IEx.pry / 0时有用)

https://github.com/elixir-lang/elixir/blob/v1.10/lib/ex_unit/lib/ex_unit.ex#L144