週刊Elixirライブラリ2015-15

Elixirのライブラリの解説を週ごとにお届けする記事です。
解説が間違っていた場合には、コメントか@hayabusa333にご連絡くださると嬉しいです。

今回はExUnitについて

# ExUnit is 何?
ExUnitは、ElixirのUnit Testを行うためのライブラリであり、xUnitシリーズの1つです。

# 実行環境
OS:OS X Yosemite
Erlang:Eshell V6.5, OTP-Version 18
Elixir:v1.0.4

# ExUnitの実行を行うための新規プロジェクトの作成

$ mix new my_ex_unit
$ cd my_ex_unit

# テストを行うためのコードを記載する
ExUnitを使うだけではなく、実際のコードをテストするためのサンプルを作るために、実装を記述する。

$ vim lib/my_ex_unit.ex

テストを行うためのサンプルコードは下記となります。

defmodule MyExUnit do
  def one do
    1
  end

  defp onep do
    1
  end
end

# Unit Testを記載
UnitTestを実施するためのコードを記載する
setupを使用するテストとassert系のテストを記載。

$ vim test/my_ex_unit_test.exs

サンプルコードは下記となります。

defmodule MyExUnitTest do
  use ExUnit.Case

  setup do
    {:ok, hello: "world"}
  end

  # setupに設定した内容を引き継いで使用するテスト項目
  test "setup. assert with a match", %{hello: hello} do
   assert hello == "world"
  end

  # def にて返ってきた値をチェック
  test "one. assert with a match" do
    assert MyExUnit.one == 1
  end

  # defp にて帰ってきた値のチェック
  # 現状はUndefinedFunctionErrorとなる(defpのテストができないか現在調査中)
  test "defp one. assert with a match" do
    assert_raise UndefinedFunctionError, fn ->
      MyExUnit.onep == 1
    end
  end

  # UndefinedFunctionError であり、返ってくるメッセージの内容のチェックも行うテスト
  test "message defp one. assert with a match" do
    assert_raise UndefinedFunctionError, "undefined function: MyExUnit.onep/0", fn ->
      MyExUnit.onep == 1
    end
  end

  # サンプルとして出力されるテスト
  test "the truth" do
    assert 1 + 1 == 2
  end
end

# ExUnitを使ってみる

$ mix test

# まとめ
今回はElixirにてUnitTestを実行するためのExUnitを紹介させていただきました。
ExUnitはElixirに標準で組み込まれていますので、どんどん使ってみてはいかがでしょうか。

それでは皆さま、良いElixirライフを