【问题标题】:How to run :pending tests from command line?如何从命令行运行 :pending 测试?
【发布时间】:2016-02-03 12:31:18
【问题描述】:

我有时会看到测试被标记为:pending

ExUnit.start
ExUnit.configure(exclude: :pending)

defmodule SublistTest do
  use ExUnit.Case, async: true

  test "empty equals empty" do
    assert Sublist.compare([], []) == :equal
  end

  @tag :pending
  test "empty is a sublist of anything" do
    assert Sublist.compare([], [nil]) == :sublist
  end
end

当您从 shell 运行测试时,显然会被排除在执行之外

elixir sublist_test.exs

有没有办法在命令行运行测试时包含:pending 测试?

第二个问题:为什么人们将测试标记为:pending

【问题讨论】:

    标签: unit-testing elixir


    【解决方案1】:

    您可以使用 Mix 项目中的 mix test 任务来执行此操作。混合项目的设置非常简单:

    $ mix new sublist
    

    您可以在test/test_helper.exs 中指定您的默认排除项:

    ExUnit.start()
    ExUnit.configure(exclude: :pending)
    

    然后您可以在test/sublist_test.exs 中编写测试。要运行测试,请执行

    $ mix test
    

    并且也包括待处理的测试

    $ mix test --include pending
    

    现在回答您的第二个问题:人们通常将测试标记为待处理,因为它们尚未实施,但他们不想忘记它们。例如,您可能在紧迫的期限内,但希望确保最终完成测试。或者可能测试还没有工作,因为你需要先实现其他东西。

    如果默认情况下未排除测试,它们将传达错误信息:受影响的测试是红色的。但是他们宁愿做项目而不是实际测试,所以默认情况下他们不应该失败。

    【讨论】:

    • 如果我只有两个文件怎么办。例如:sublist.exs、sublist_test.exs。我不能使用mix,因为我没有mix.exs
    • 我认为开箱即用是不可能的。您可以读取命令行参数,然后手动将其输入到 exunit 配置中,但使用混合项目要容易得多,也不那么脆弱。
    猜你喜欢
    • 2014-09-02
    • 2015-05-22
    • 1970-01-01
    • 2015-05-09
    • 2011-04-25
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    相关资源
    最近更新 更多