如何让 Mix 仅运行我的测试套件中的特定测试?
运行时
mix test
所有测试都被执行
有 5 种方法可以使用 Elixir 仅运行特定测试
使用
mix test path_to_your_tests/your_test_file.exs
your_test_file.exs
通过添加冒号和该测试的行号来从特定测试文件运行特定测试
例如
mix test path_to_your_tests/your_test_file.exs:12
将在第 12 行运行测试
your_test_file.exs
定义要在测试方法中排除的标签
defmodule MyTests do
@tag disabled: true
test "some test" do
#testtesttest
end
end
在命令行上像这样执行测试
mix test --exclude disabled
定义要包含在测试方法中的标签
defmodule MyTests do
@tag mustexec: true
test "some test" do
#testtesttest
end
end
在命令行上像这样执行测试
mix test --only mustexec
通常通过将其添加到您的
test/test_helper.exs
文件ExUnit.configure exclude: [disabled: true]
警告: Mix 有一个
--include
指令。该指令与 --only
指令不相同。 Include 用于打破 4) 中描述的
test/test_helper.exs
文件中的常规配置(排除)。
由于某种原因,谷歌搜索
elixir mix include tests
或类似内容从未出现在我的搜索结果中,因此我写了这篇文章及其答案。有关更多信息,请参阅 Mix 文档。
如果您不想
mix test
运行某些测试文件,只需重命名它们即可。 mix test
匹配任何以 _test.ex
或 _test.exs
结尾的文件,因此您所要做的就是将那些您不想运行的文件重命名为不匹配的其他文件,例如 _test_off.ex
。
controller_test.exs
-> controller_test_off.exs
运行测试子集的方法:
_test.ex[s]
文件中的测试集,例如: describe "String.capitalize/1" do
... [some tests]
end
mix test
运行 --only describe:"..."
,例如:mix test --only describe:"String.capitalize/1"
mix
将运行测试,显示有多少被排除,例如:
... [results]
16 tests, 2 failures, 8 excluded