Rspec’s focus: true can be used to just run a subset of specs. To achieve something similar with Elixir, there are two main approaches that I have used.
Line number targeting
You can specify the test’s line number from the command line. Here’s an example:
$ mix test test/address_builder/au/import/gnaf_importer_test.exs:41
This will run just the test on line 41
of the file.
Targeting with tags
You can use tags to mark a test (or multiple tests) to be run. Here’s an example:
@tag :focus
test "with mixed case" do
assert StringUtil.titleize("weLLington") == "Wellington"
end
You can then run your test with the --only
option:
$ mix test --only focus
It’s also compatible with the [mix_test_watch
](https://github.com/lpil/mix-test.watch) package, so any edits will be retested straight away.
$ mix test.watch --only focus
Further reading
-
Learn more from the official ExUnit configuration options.
-
Learn more about skipping tests in this article by Pomodoro.