How can I make Mix run only specific tests from my suite of tests?

Elixir

Elixir Problem Overview


How can I make Mix run only specific tests from my suite of tests?

When running mix test all tests are executed

Elixir Solutions


Solution 1 - Elixir

There are 5 ways to run only specific tests with Elixir

  1. run a single file with mix test path_to_your_tests/your_test_file.exs
    This will run all test defined in your_test_file.exs

  2. run a specific test from a specific test file by adding a colon and the line number of that test
    for example mix test path_to_your_tests/your_test_file.exs:12 will run the test at line 12 of your_test_file.exs

  3. define a tag to exclude on your test methods

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

on the command line execute your tests like this
mix test --exclude disabled

  1. define a tag to include on your test methods

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

on the command line execute your tests like this
mix test --only mustexec

  1. Generally exclude some tagged tests by adding this to your test/test_helper.exsfile
    ExUnit.configure exclude: [disabled: true]

Warning: Mix has an --include directive. This directive is NOT the same as the --only directive. Include is used to break the general configuration (exclusion) from the test/test_helper.exsfile described under 4).

For some reason googling for elixir mix include testsor the like never shows up on my search results therefore I have written this entry and its answer. For more info, see the Mix documentation.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionrobkuzView Question on Stackoverflow
Solution 1 - ElixirrobkuzView Answer on Stackoverflow