GW 内読了? を目指したい。
とりあえず Chapter 1 の Foundations of Property-Based Tesing の章から読み始め。
導入
は以下にて。
Cloud Shell から apt-get install
したら erlang のバージョン古いみたいで上の方法でないと駄目みたいです。
とりあえず
mix.exs
を以下に修正して
# Run "mix help deps" to learn about dependencies.
defp deps do
[
# {:dep_from_hexpm, "~> 0.3.0"},
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
{:propcheck, "~> 1.1", only: [:test, :dev]}
]
end
mix deps.get
してmix test
が動いた
状態です。
Running a Property
Cloud Shell ってエディタ付属なんスね。でも、起動したら接続もリセットされちゃって環境設定イチからしなきゃ、な事態にorz
仕方が無いので以下なスクリプトを $HOME に保存。
#/bin/bash
sudo dpkg -i ~/erlang-solutions_1.0_all.deb
sudo apt-get update
sudo apt-get install esl-erlang
sudo apt-get install elixir
でびあんパケジは $HOME (永続ストレージ) にあるので大丈夫のはず。あと propcheck なナニも pbt/ 配下に導入されているようで、都度 mix deps.get
しなくても良いみたいです。
テストの例として test/pbt_test.ex
を以下に、とのこと。
defmodule PbtTest do
use ExUnit.Case
use PropCheck
property "always works" do
forall type <- term() do
boolean(type)
end
end
def boolean(_) do
true
end
end
実行してみるに以下な出力。
$ mix test
.
Finished in 0.1 seconds
1 property, 0 failures
Randomized with seed 23462
現時点で何してるのか、が今一つ理解できていないのですが boolean
は常に true を戻すので、なのかどうか。term()
が謎です。
とりあえず
このまんま次、に進んでしまって良いのかどうか。