我有时会看到测试被标记为 :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
.
最佳答案
您可以使用 mix test
执行此操作Mix 项目中的任务。 Mix 项目的设置非常简单:
$ mix new sublist
您可以在
test/test_helper.exs
中指定默认排除项:ExUnit.start()
ExUnit.configure(exclude: :pending)
然后你可以在
test/sublist_test.exs
中编写你的测试.要运行测试,请执行$ mix test
并包括待定的测试
$ mix test --include pending
现在是您的第二个问题:人们通常将测试标记为待处理,因为它们尚未实现,但他们不想忘记它们。例如,您可能在紧迫的期限内,但希望确保测试最终能够完成。或者也许测试还没有工作,因为你需要先实现其他的东西。
如果默认情况下不排除测试,它们会传达错误信息:受影响的测试是红色的。但是他们更愿意做项目而不是实际测试,所以默认情况下他们不应该失败。
关于unit-testing - 如何运行 :pending tests from command line?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33497700/