在运行ExUnit测试时,如何将日志打印到控制台?

时间:2016-07-26 00:19:37

标签: elixir ex-unit

为了在失败的集成测试期间进行调试,我希望仍能看到我的应用程序日志。是否有一个命令可以传递给mix test任务来完成此任务?

2 个答案:

答案 0 :(得分:7)

每个混合项目都有一个config.exs文件。混合启动时,会加载此文件。灵丹妙药中的常见模式是为不同的环境定义配置,例如test.exsdev.exsprod.exs等等。

凤凰城等许多项目都会在config文件夹中为您生成这些文件,您会在config.exs行中看到这一行:

import_config "#{Mix.env}.exs"

当您运行mix test时,它会将MIX_ENV环境变量设置为“test”,这意味着import_config行会加载您的test.exs文件。

因此,为了仅为您的测试设置日志记录级别,您可以在test.exs文件中编写以下内容:

# Print only warnings and errors during test
config :logger, level: :warn

答案 1 :(得分:0)

为了在 IO.inspects 上显示 mix test 和其他调试日志,请更改以下配置:

  1. config/test.exs 中,找到以下行:
# Print only warnings and errors during test
config :logger, level: :warn
  1. 注释掉上一行并使用 compile_time_purge_matching 选项添加以下配置:
config :logger,
  backends: [:console],
  compile_time_purge_matching: [
    [level_lower_than: :debug]
  ]

当您完成调试测试时,注释掉 步骤 2 中的 compile_time_purge_matching 配置并取消注释 您的原始 level: :warn 配置以避免混乱的测试日志。

旧版本注意:如果您使用的是旧版本的 Elixir, 使用以下已弃用的配置代替 compile_time_purge_matching

config :logger,
  backends: [:console],
  compile_time_purge_level: :debug

compile_time_purge_level: debug 仍可在 Elixir 1.12 上运行,但会出现弃用警告。