如何让 Mix 仅运行我的测试套件中的特定测试?

问题描述 投票:0回答:3

如何让 Mix 仅运行我的测试套件中的特定测试?

运行时

mix test
所有测试都被执行

elixir
3个回答
117
投票

有 5 种方法可以使用 Elixir 仅运行特定测试

  1. 使用

    mix test path_to_your_tests/your_test_file.exs

    运行单个文件 这将运行
    your_test_file.exs

  2. 中定义的所有测试
  3. 通过添加冒号和该测试的行号来从特定测试文件运行特定测试
    例如

    mix test path_to_your_tests/your_test_file.exs:12
    将在第 12 行运行测试
    your_test_file.exs

  4. 定义要在测试方法中排除的标签

    defmodule MyTests do
        @tag disabled: true
        test "some test" do
            #testtesttest
        end
    end
    

    在命令行上像这样执行测试

    mix test --exclude disabled

  5. 定义要包含在测试方法中的标签

    defmodule MyTests do
        @tag mustexec: true
        test "some test" do
            #testtesttest
        end
    end
    

    在命令行上像这样执行测试

    mix test --only mustexec

  6. 通常通过将其添加到您的

    test/test_helper.exs
    文件
    来排除一些标记的测试
    ExUnit.configure exclude: [disabled: true]

警告: Mix 有一个

--include
指令。该指令与 --only 指令
相同。 Include 用于打破 4) 中描述的
test/test_helper.exs
文件中的常规配置(排除)。

由于某种原因,谷歌搜索

elixir mix include tests
或类似内容从未出现在我的搜索结果中,因此我写了这篇文章及其答案。有关更多信息,请参阅 Mix 文档


0
投票

如果您不想

mix test
运行某些测试文件,只需重命名它们即可。
mix test
匹配任何以
_test.ex
_test.exs
结尾的文件,因此您所要做的就是将那些您不想运行的文件重命名为不匹配的其他文件,例如
_test_off.ex

controller_test.exs
->
controller_test_off.exs


0
投票

运行测试子集的方法:

  1. 使用 ExUnit.Case.describe/2 来标记
    _test.ex[s]
    文件中的测试集,例如:
  describe "String.capitalize/1" do
    ... [some tests]
  end
  1. 使用
    mix test
    运行
    --only describe:"..."
    ,例如:
mix test --only describe:"String.capitalize/1"

mix
将运行测试,显示有多少被排除,例如:

... [results]
16 tests, 2 failures, 8 excluded
© www.soinside.com 2019 - 2024. All rights reserved.