But sometimes you don’t want to run all your tests. Maybe you added integration tests or for whatever reason have a test that gives useful information but takes a long time to execute. In these situations, you can add the “skip” tag by adding an annotation before a test which shouldn’t be executed by
@tag :skip test "should be skipped..." do ...
This way, a normal
mix test run will be fast (and won’t break your continuous integration system), and when you want to actually run that test locally, you can:
mix test --include skip
However, this will run all tests marked
skip. A more flexible approach is to add your own tag and use it to name your slow tests.
test/test_helper.exs to look like this, to prevent those tests from running by default:
Next, annotate your slow tests with names:
@tag slow_test: "backtest" test "Backtest should take ages" do ... end @tag slow_test: "optimiser" test "Optimiser should waste a lot of time" do ... end
mix test will still run your normal unit tests, and you can run one of the slow tests with
mix test --trace --only slow_test:optimiser (the addition of the
--trace option means ExUnit will let the test run as long as is necessary rather than killing it after 60 seconds).