我有时会看到测试被评为: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
。
答案 0 :(得分:5)
您可以使用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
现在提出第二个问题:人们通常将测试标记为待定,因为它们尚未实现,但他们不想忘记它们。例如,您可能处于紧迫的截止日期,但希望确保最终完成测试。或者测试可能还没有成功,因为你需要先实现其他的东西。
如果默认情况下没有排除测试,他们会传达错误的信息:受影响的测试是红色的。但他们宁愿做项目而不是实际测试,所以他们不应该默认失败。