defmodule MyTest do
  use ExUnit.Case
  use ExUnit.Case, async: true  # for async

  test "the truth" do
    assert 1 + 1 == 2
  end
end

Capture IO

import ExUnit.CaptureIO

test "capture io" do
  result = capture_io(fn ->
    IO.puts "sup"
  end)

  assert result == "sup\n"
end

Capture logs

config :ex_unit, capture_logs: true

Async

defmodule AssertionTest do
  # run concurrently with other test cases
  use ExUnit.Case, async: true
end

Assertions

```elixir assert x == y refute x == y

assert_raise ArithmeticError, fn -> 1 + “test” end

assert_raise ArithmeticError, “message”, fn -> … assert_raise ArithmeticError, ~r/message/, fn -> …

flunk “This should’ve been an error”

Also see